在網上看到很多計算素數的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...