求质数——埃拉托色筛选法

Posted 朝雾之归乡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求质数——埃拉托色筛选法相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[])
{
    int i = 2, j = 0;
    long N = atol(argv[1]);
    int *a = malloc(N*sizeof(int));
    if (NULL == a)
    {
        printf("There is no enough memory!\n");
        return -1;
    }
    for(i=2; i<N; i++)
        a[i] = 1;

    for(i=2; i<N; i++)
    {
        if(a[i])
        {
            for(j=i; j*i<N; j++)
            {
                a[i*j] = 0;
            }
        }
    }

    for(i=2; i<N; i++)
    {
        if(a[i])
            printf("%4d ", i);
    }

    printf("\n");

    return 0;

}

 

以上是关于求质数——埃拉托色筛选法的主要内容,如果未能解决你的问题,请参考以下文章

埃拉托色尼筛选法求素数

埃拉托色尼筛选法的C++实现

埃拉托色尼筛选法的步骤

算法笔记_012:埃拉托色尼筛选法

这是用埃拉托色尼筛选法筛选2~1000的素数的C++程序,能否详细解释一下每个步骤的意思

埃拉托色尼筛选法