NYOJ 187 快速查找素數

快速查找素數

時間限制: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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章