您的位置:首页 > 其它

筛选法求素数

2014-07-31 19:08 148 查看
素数的定义是:除了1和本身外,不存在整除这个整数本身的整数。

主要思想如下:

在所求区间内剔除能被2整除的整数,

在所求区间内剔除能被3整除的整数,







在所求区间内剔除能被sqrt(num_Max)整除的整数,

由于在以上步骤中有重复和无效的判断,所以进行了小的优化:在剔除能被 i 整除的整数操作中,可以直接从 i * 2 开始判断;在判断前也可先加一个判断是否已经是素数。

实例代码

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define num 100

int main()

{

    int a[num+1];

    for (int i = 0; i < num + 1; i++) {

        a[i] = i;

    }

    a[1] = 0;//1不是素数

    for (int i = 2; i<sqrt((double)num); i++) {

        for (int j = i *2; j <= num; j++) {

            if (a[j] != 0 && a[j] % i == 0) {

                a[j] = 0;

            }

        }

    }

    for (int i = 1; i<num + 1; i++)

    {

        if (a[i] != 0)

        {

            printf("%d ", a[i]);

        }

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: