C 高效計算素數的方法

2021-08-13 16:39:35 字數 1336 閱讀 3004

在網上看到很多計算素數的c++例子,本人試了一下覺得效率不高,於是自己寫了個算,效率還算可以,如圖!

又稱質數,有無限個。質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數

除2以外所有的偶數都不是素數;

判斷乙個數n是否為素數需判斷它能否被2~(n-1)的數整除(余為0)

若n為大於或等於2的正整數,在n到 之間至少有乙個質數

…… 以上所列或多或少都有作用,我們只一些核心的內容:「除2以外所有的偶數都不是素數」「判斷它能否被2~(n-1)的數整除(余為0)」

確定並改進for迴圈

就此,我們大致可以使用for迴圈+if語句進行列舉判斷,

for(n=0;n<=1000000;n++)

又根據第2條,我們可以節省很多時間不用去窮舉,所以將for中的增量改為2,將初始值改為1(其實就是窮舉除1的奇數進行判斷)

for(n=1;n<=1000000;n+=2) //n+=2是n=n+2縮寫

減少if判斷次數及內容

這裡要用到乙個數學性質,能減少程式的運算列舉量

if(n%i==0)

break;

else if(n%i!0)

輸出語句:輸出n

改後

if(n%i==0)

break;

if (i>sqrt(n))

優化

c++自帶有計時函式,我們可以使用它來計時程式執行完需要的時間

clock()函式使用示例:

純原創手打,請珍惜他人智力成果!

#include

#include//for clock()

#include//可無

using

namespace

std;

int main()

最後放上**計算素數**的**,也許還有改進方法,歡迎討論
#include

#include

#include

using

namespace

std;

int main()

高效判斷素數方法

2012 8 2 18 07 孿生素數 所謂孿生素數指的是間隔為 2 的相鄰素數,它們之間的距離已經近得不能再近了。若n 6且n 1和n 1為孿生素數,那麼n一定是6的倍數。證明 n 1和n 1是素數 n 1和n 1是奇數 n是偶數,即n是2的倍數 假設n不是3的倍數,得 n 3x 1 或 n 3x...

判斷是否為素數的高效方法(Python)

演算法一 針對輸入的數字x,我們可以遍歷從2到x 1這個區間中的數,如果x能被這個區間中任意乙個數整除,那麼它就不是質數。def is prime1 x for i in range 2,x if num i 0 return false return true演算法二 對演算法一的優化,事實上只需...

求素數的高效實現

對於給定的乙個數n,如何判斷其是否是素數呢?最簡單最直觀的方法是試除法 下面的演算法1 2 3 還有一種方法是rabin miller演算法。from 2 to n思路 從2到n 1,做取模運算n mod i 若運算結果均為 0 則 n 為素數 實現 public boolean isprimenu...