快速查詢素數

2021-08-20 12:51:08 字數 812 閱讀 9906

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度: 3

描述 現在給你乙個正整數n,要你快速的找出在2.....n這些數裡面所有的素數。 輸入

給出乙個正整數數n(n<=2000000)

但n為0時結束程式。

測試資料不超過100組

輸出將2~n範圍內所有的素數輸出。兩個數之間用空格隔開

樣例輸入

5

1011

0

樣例輸出

2 3 5

2 3 5 7

2 3 5 7 11

篩法求素數:篩選法又稱篩法,具體做法是:先把n個自然數按次序排列起來。1不是質數,也不是合數,要划去。第二個數2是質數留下來,而把2後面所有能被2整除的數都劃去。2後面第乙個沒劃去的數是3,把3留下,再把3後面所有能被3整除的數都劃去。3後面第乙個沒劃去的數是5,把5留下,再把5後面所有能被5整除的數都劃去。這樣一直做下去,就會把不超過n的全部合數都篩掉,留下的就是不超過n的全部質數。因為希臘人是把數寫在塗臘的板上,每要劃去乙個數,就在上面記以小點,尋求質數的工作完畢後,這許多小點就像乙個篩子,所以就把埃拉託斯特尼的方法叫做「埃拉託斯特尼篩」,簡稱「篩法」。(另一種解釋是當時的數寫在紙草上,每要劃去乙個數,就把這個數挖去,尋求質數的工作完畢後,這許多小洞就像乙個篩子。)

#include#define m 2000000

int a[m]=;

int main()

return 0;

}

快速查詢素數

題目 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 現在給你乙個正整數n,要你快速的找出在2.n這些數裡面所有的素數。輸入給出乙個正整數數n n 2000000 但n為0時結束程式。測試資料不超過100組 輸出將2 n範圍內所有的素數輸出。兩個數之間用空格隔開 樣例輸入 5...

快速查詢素數

快速查詢素數 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述現在給你乙個正整數n,要你快速的找出在2.n這些數裡面所有的素數。輸入給出乙個正整數數n n 2000000 但n為0時結束程式。測試資料不超過100組 輸出將2 n範圍內所有的素數輸出。兩個數之間用空格隔開 樣例輸...

快速查詢素數

我們以前判斷素數是從2到這個數的平方根一直檢查是否是素數。include include include includeusing namespace std int main if f 1 printf yes n else printf no n 現在如果數很大的話我們可以把每個數的倍數去掉就行...