NYOJ--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
 1 /*
 2     Name: NYOJ--187--快速查找素数
 3     Copyright: ©2017 日天大帝
 4     Author: 日天大帝 
 5     Date: 29/04/17 15:04
 6     Description: 差点忘记这个求素数的方法 
 7 */
 8 #include<cstring>
 9 #include<cstdio>
10 //#include<iostream>
11 const int MAX = 2 * 1e6;
12 char arr[MAX];
13 int main(){
14 //    ios::sync_with_stdio(false);//加了就超时 
15     memset(arr,1,sizeof(arr));
16     arr[0] = arr[1] = 0;
17     for(int i=2; i<MAX; ++i){
18         if(arr[i])
19         for(int j=2*i; j<MAX; j+=i){
20             arr[j] = 0;
21         }
22     }
23     int n;
24     while(scanf("%d",&n),n){
25         for(int i=2;i<=n; ++i){
26             if(arr[i])printf("%d ",i);
27         }
28         printf("
");
29     }
30     return 0;
31 }
原文地址:https://www.cnblogs.com/langyao/p/6785359.html