判斷素數與產生素數表(質數)

2022-08-21 22:51:13 字數 523 閱讀 6878

素數在小學數學也叫質數

方法:所謂素數是指除了1和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被2~16的任一整數整除。因此判斷乙個整數m是否是素數,只需把m被2~m-1之間的每乙個整數去除,如果都不能被整除,那麼m就是乙個素數。

另外判斷方法還可以簡化。m不必唄2~m-1之間的每乙個整數去除,只需被2~√m之間的每乙個整數去除就可以了。如果m不能被2~√m間任一整數整除,m必定是素數。例如判別17是是否為素數,只需使17被2~4之間的每乙個整數去除,由於都不能整除,可以判定17是素數。

c++程式如下:

#include

#include//引用了數學函式平方根:sqrt()

using namespace std;

bool isprime(int x)

int main()

在實際程式設計中,如果每個數都要判斷是否是素數,採用上面的演算法,時間複雜度會很大。這時就採用素數表,一下子就簡化了時間複雜度。

方法如下:篩法產生素數表

實現程式如下:

素數的判斷和素數表

素數問題自己之前也接觸過,這裡做乙個系統的總結 一 素數的判斷 首先要明白什麼是素數 素數就是只能被1和自己整除的整數,不符合該條件的稱為合數 所以當我們判斷乙個數是否是素數的時候,最直接粗暴的演算法就是對2 n 1進行列舉,如果存在約數k,滿足n k 0 此時,這個數就不是素數,為合數 但是該方法...

mysql 判斷質數 質數(素數)判斷演算法總結

1.原始演算法 就是將質數的定義翻譯成 就要看i是否能被小於它的sqrt i 的數整除。時間複雜度o n sqrt n 空間複雜度o m m為質數個數。2.質數篩法 定義bool is prime n 1 初始化為1 奇數為1,偶數為0 已經2為最小的質數,將2的倍數的布林值都設為false,如此類...

演算法題 判斷素數 質數

判斷素數 埃拉託斯特尼篩法 這種方法的思想是設定乙個標誌陣列isprimes n 標誌陣列的每一位標示相應的數是不是素數,初始化為全true。演算法從i 2開始,依次將質數的倍數標記為非素數,即將標記陣列的相應位改為false。標記質數的倍數的時候從i i也就是i的平方開始標記,不需要從i j 且j...