埃拉托斯特尼筛法求素数

来源:互联网 发布:金山tw域名遭抢注 编辑:程序博客网 时间:2024/06/08 13:53

原理是从2开始,将每个素数的各个倍数,标记成合数。一个素数的各个倍数,是一个差为此素数本身的等差数列。此为这个筛法和试除法不同的关键之处,后者是以素数来测试每个待测数能否被整除。
埃氏筛法
注:图片来自维基百科
C语言代码:

#include <stdio.h>#define N 1000int main(int argc,char* argv[]){    int i,j,a[N];    for(i=2;i<N;i++)        a[i] = 1;    for(i=2;i<N;i++)        if(a[i])            for(j=i;i*j<N;j++)                a[i*j] = 0;    j=0;    for(i=2;i<N;i++)    {        if(a[i])        {            printf("%d ",i);            j++;            if(j%10 == 0)                printf("\n");        }    }    printf("\n");}
0 0