模板 3種素數篩法

2021-08-15 18:11:08 字數 486 閱讀 6193

試除唄…………不解釋。**如下:

p.s:我給的是乙個完整程式,一般只需要寫成void函式就可以。

//enor  prime 1  o(n*sqrt(n))

#include

#include

#define maxn 10001

using

namespace

std;

int prime[maxn];

int cnt=0;

int main()

if(flag)

}//輸出2到n的所有質數

for(int i=1;i<=cnt;i++)

return

0;}

演算法的思想:引入乙個 vst 陣列,每找到乙個素數 i,就篩掉大於等於 i²的所有 i 的倍數(思考為什麼不用考慮 i² 之前 i 的倍數?),這樣篩去合數的過程變得具有目的性。

素數篩法(模板)

質數 在大於1的整數中,如果只包含1和本身這兩個約數,那麼就是素數時間複雜度 o sqrt n static boolean prime int n return true 合數只會被它的最小質因子篩掉 時間複雜度 o n static final int n static int prime ne...

素數篩法 模板

為什麼只遍歷到sqrt n 就夠了?反證法 假設只遍歷2 sqrt n 不能把所有非素數置為false,即遍歷完了2 sqrt n 後,在sqrt n n範圍內仍有乙個非素數k,但isprime k true。證 k在sqrt k 之前一定有乙個素數因子 任何非素數都可以拆成素數的乘積,所以k至少有...

模板 素數篩法

好 快 素數是什麼就不用介紹了吧。先介紹判斷素數的方法 先看樸素演算法 for i 2 i if n i 0 break if i n printf n is prime else printf n is not prime 真的好樸素。用時o n 肯定不行啊,吃棗藥丸的。怎麼優化呢?不難發現,如果...