C语言经典案例--求素数

求某个范围内的素数,如1-100

/****求素数 解法1.(先入为主思想)利用标志位来判断****/
#include <stdio.h>
#define MAX 100

void sushu(int num)
{
    int flag = 1, i=1, temp = 2;
    for(i=1; i<=num; i++)
    {
        flag = 1;    //标志位,默认每个数都是质数 
        for(temp=2; temp<i; temp++)
        {
            if(i%temp == 0)
            {
                flag = 0;    //有整除,不是质数 
                break;
            }
        }
        if(flag == 1)
        {
            printf("%d是素数..\n",i);
        }
    }
} 
int main(void)
{
    sushu(MAX);
    return 0;
}
/****求素数 解法2.缩减版,适用于求某个数是否为素数*****/
#include <stdio.h>
#define MAX 100

int sushu02(int i)
{
    int j;
    for(j=2; j*j<=i; j++)
    {
        if(i%j == 0)
        {
            return 0;    //返回0为非素数 
        }
    }
    return 1;    //返回1为素数 
}
int main(void)
{
    int temp = 0;
    for(temp=2; temp<MAX; temp++)
    {
        if(sushu02(temp) == 1)
        {
            printf("%d为素数.\n",temp);
        }
    }
    return 0;
}

 运行结果:

2为素数.
3为素数.
5为素数.
7为素数.
11为素数.
13为素数.
17为素数.
19为素数.
23为素数.
29为素数.
31为素数.
37为素数.
41为素数.
43为素数.
47为素数.
53为素数.
59为素数.
61为素数.
67为素数.
71为素数.
73为素数.
79为素数.
83为素数.
89为素数.
97为素数.

posted @ 2019-08-21 16:46  chua052  阅读(1167)  评论(0编辑  收藏  举报