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 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; } 
 
                    
                     
                    
                 
                    
                
 

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号