NYOJ--187--快速查找素数(筛选法,素数打表)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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("\n");
29     }
30     return 0;
31 }

 

以上是关于NYOJ--187--快速查找素数(筛选法,素数打表)的主要内容,如果未能解决你的问题,请参考以下文章

如何提高筛选法求大范围素数的效率

素数筛选法

c语言中用筛选法求素数

素数打表——找出1~100以内的素数

数论——素数筛选法与整数的素因子分解

素数筛选法