ny 187 快速查找素数
快速查找素数
时间限制: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
View Code#include <stdio.h> #include <string.h> #define MAXN 2000001 int vis[MAXN]; int p[200000]; //存放素数 void prime() { memset(vis,0,sizeof(vis)); int i; long long j; int t=1; for(i=3; i<MAXN; i+=2) if(!vis[i]) { p[t++]=i; for(j=(long long)i*i; j<MAXN; j+=i*2) vis[j]=1; } } int main() { prime(); int n,i; while(scanf("%d",&n) && n!=0) { printf("2"); for(i=1; p[i]<=n && p[i]!=0; i++) printf(" %d",p[i]); printf("\n"); } return 0; }