NYOJ 187(快速素数)
//筛法是把不是素数的数标记掉,因此先要默认全为素数,先打表,不要每次打表 #include<stdio.h> #include<math.h> #include<string.h> #define N 2000001 int visit[N]; void shaifa() { int i,j; int m=(int)(sqrt(N)+0.5); memset(visit,0,sizeof(visit)); for(i=2;i<m;i++) if(!visit[i])//是素数 { for(j=2*i;j<N;j+=i) visit[j]=1; } } int main() { int T,i;int ans; shaifa(); while(scanf("%d",&T),T) { for(i=2;i<=T;i++) if(visit[i]==0) printf("%d ",i); printf("\n"); } return 0; }
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.