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 }