快速尋找素數

快速查找素數

時間限制: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
個人理解:之前寫的都超時了,這份在我電腦上也超時,在別人電腦上沒超時
#include<stdio.h>
#define N 2000001
int a[N],i,j;
int main(){
    int m;
    for(i = 2;i <= 2000000;i++){
        if(a[i]==0)
            for(j = i + i;j <= 2000000;j += i)
                a[j] = 1;
    }
    while(scanf("%d",&m) && m!=0){
        for(i = 2;i <= m;i++){
            if(a[i] == 0){
                printf("%d ",i);
            }
        }
        printf("\n");
    }
    return 0;
}

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