關於快速尋找素數的方法

2021-07-27 06:28:30 字數 524 閱讀 2438

利用素數篩選法進行素數的快速查詢。

原理很簡單,素數一定是奇數,素數的倍數一定不是素數。

思路如下:

預定義n表示10000,即表示查詢10000以內的素數,首先定義陣列prime對n以內的數進行標記,奇數存為1,偶數存為0,最終實現結果為素數的prime值為1,因此將prime[2]賦值為1(2是素數)。之後利用for迴圈,對n以內的奇數進行遍歷(注意for迴圈的條件控制),for裡用if判斷是否為素數(奇數),若是,執行內部巢狀的for迴圈判斷該奇數是否為素數,若是則標記為1,若不是則prime置為0,之後再用if判斷是否為素數,若是,則利用迴圈將該素數的倍數,都標記為0,意在體現,素數的倍數一定不是素數,注意for迴圈內部的條件:for(j=2*i;j

這一演算法理解之後較為簡單,主要難點在於for迴圈的應用,條件的判斷,邏輯必須要清晰!#include#include#define n 10000

int prime[n];

int main()

prime[2]=1;//2是素數

for(i=3;i

素數的快速判斷方法

大於等於5的素數與6的倍數相鄰 所有自然數可以用集合a 表示,其中n 0,顯然,子集b 內的元素都不是素數,所以只有6n 1和6n 5可能是素數,素數一定可以用6n 1和6n 5其中的乙個形式表示,即大於等於5的素數與6的倍數相鄰 上面說到大於或等於5的素數一定可以用6n 1或者6n 5來表示,在判...

快速篩選素數方法

篩選2 n素數有很多方法,最一般的方法就是利用素數的定義也就是利用素數只能被本身和1整除的性質進行篩選。但是這個方法效率太低,不建議使用這個方法。有這麼一種方法,好像叫 拉托遜斯篩選法 我也不是很清楚 如下 for int i 2 i n i 這個其實還是可以優化的,仔細想想這裡面有重複篩選的情況,...

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

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