埃氏篩法 素數的快速篩選

2022-07-15 18:54:09 字數 449 閱讀 1023

埃氏篩法的的核心是: 素數的倍數都不是素數。

那我們執行這樣乙個策略, 我們可以確定的是 2 是最小的素數, 建立乙個表並將除了 0 1 外的所有數標記為素數,我們將篩選範圍內的 2 的倍數全部標記為合數(非素數),然後取出表中最小的素數,執行相同的策略(講素數的倍數標記為非素數)。下圖可以完美的演示這樣乙個演算法

埃氏篩的複雜度僅有o(nloglogn),算是比較快的了。當資料量不是太大的時候,可以把它的複雜度看作是線性的。

const int max_num = 10000 + 10;

bool is_prime[max_num];

void prime_table(int maxn)}}

素數的快速篩選(埃氏篩法)

要列舉n以內的素數,可以用埃氏篩法。這是乙個與輾轉相除法一樣古老的演算法。首先,將2到n範圍內的所有整數寫下來。其中最小的數字2是素數。將表中所有2的倍數都劃去。表中剩餘的最小數字是3,它不能被更小的數整除,所以是素數。再將表中所有3的倍數全都劃去。依次類推,如果表中剩餘的最小數字是m時,m就是素數...

埃氏篩法 素數篩

埃式篩法 給定乙個正整數n n 10 6 問n以內有多少個素數?做法 做法其實很簡單,首先將2到n範圍內的整數寫下來,其中2是最小的素數。將表中所有的2的倍數劃去,表中剩下的最小的數字就是3,他不能被更小的數整除,所以3是素數。再將表中所有的3的倍數劃去 以此類推,如果表中剩餘的最小的數是m,那麼m...

素數 埃氏篩法

題目 求2 100以內的素數。素數 prime number 又稱質數,是指乙個大於1的自然數,除了1和它本身外,不能被整除以其他自然數。解法一 根據素數的定義,即用該數除比其小的數 1除外 都不能除盡,即為素數 public class prime if i n system.out.print ...