埃拉托斯特尼筛法 快速查找素数 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。 输入 给出一个正整数数N(N<=2000000) 但N为0时结束程序。 测试数据不超过100组 输出 将2~N范围内所有的素数输出。两个数之间用空格隔开 样例输入 5 10 11 0 样例输出 2 3 5 2 3 5 7 2 3 5 7 11 来源 经典题 上传者 路过这 思路参见wiki的解释。复杂度是接近线性的。 #include<stdio.h> #include<string.h> #define MAX 2000001 int all[MAX]; int N,i,j,s; int main() { memset(all,1,sizeof(all)); for(i=2;i<=MAX;i++) if(all[i]) for(j=i+i;j<=MAX;j+=i) all[j]=0; while(scanf("%d",&N),N) { for(i=2;i<=N;i++) if(all[i]) printf("%d ",i); printf("\n"); } return 0; }