快速查詢素數 素數篩法兩種模版

2021-06-22 20:41:53 字數 901 閱讀 9400

題目鏈結 nyoj187

【題目】

時間限制:

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

**經典題

【第一種(直接bool陣列判斷是否是prime)】804ms

#include #include #include #define maxn 2000000

bool prime[maxn+1];

inline void out(int x)

void getprime()

}int main()

return 0;

}

【第二種(prime數字順序儲存每乙個素數並在prime[0]儲存2~n範圍內有幾個素數)】676ms

#include #include #include #define maxn 2000000

int prime[maxn+1];

inline void out(int x)

void getprime() }}

int main()

return 0;

}

關於素數的快速查詢 素數篩選法

利用素數篩選法進行素數的快速查詢。原理很簡單,素數一定是奇數,素數的倍數一定不是素數。思路如下 預定義n表示10000,即表示查詢10000以內的素數,首先定義陣列prime對n以內的數進行標記,奇數存為1,偶數存為0,最終實現結果為素數的prime值為1,因此將prime 2 賦值為1 2是素數 ...

快速查詢素數

題目 時間限制 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範圍內所有的素數輸出。兩個數之間用空格隔開 樣例輸...