快速查找素數
時間限制:1000 ms | 內存限制:65535 KB
-
描述
- 現在給你一個正整數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
-
來源
- 經典題
-
上傳者
- 路過這
#include <cstdio>
#include <cstring>
#define maxn 2000005
#define maxs 150000
bool note[maxn];
int pr[maxs],pn;
void prime(){
pn=0;
memset(note,0,sizeof(note));
for(int i=2;i<maxn;i++){
if(!note[i])
pr[pn++]=i;
for(int j=0;j<pn&&pr[j]*i<maxn;j++){
note[pr[j]*i]=1;
if(i%pr[j]==0)
break;
}
}
}
int main(){
prime();
int n;
while(~scanf("%d",&n)){
if(n==0)
return 0;
for(int i=0;pr[i]<=n;i++)
printf("%d ",pr[i]);
printf("\n");
}
return 0;
}