筛素数<一>

来源:互联网 发布:linux多线程应用 编辑:程序博客网 时间:2024/05/29 10:55
#include <stdio.h>#include <time.h>#include <math.h>#define max 10000000int prime[10000000];bool flag[max];void fun(){int i,j,k,l;l=sqrt(max+0.0);for(i=2;i<=l;i++)if(flag[i]==0)for(j=i*i;j<max;j+=i)flag[j]=1;for(i=2,j=0;i<max;i++)if(flag[i]==0)prime[j++]=i;}void get_prime(){int i,j,k=0,l;for(i=2;i<max;i++){if(flag[i]==0)prime[k++]=i;for(j=0;j<k&&i*prime[j]<max;j++){flag[i*prime[j]]=1;if(i%prime[j]==0)break;}}}int main(){int i,j,k,l;//get_prime();fun();for(i=0;i<20;i++)printf("%d ",prime[i]);printf("%lf\n",(double)clock()/CLOCKS_PER_SEC);}