求素數的方法

2021-07-16 21:30:10 字數 988 閱讀 9930

如何求取素數呢?其實很簡單,思想呢就是找出所有整數p然後,刪去2*p,3*p。。。。。就好了?

大該怎麼做呢?

我們來真實資料

100以內有25個素數,10^3有168個,10^4有1229個,10^5有9592個,10^6有78498個,10^7有664579個

我們就有例項說明一下:

0~n的所有素數

#include #include #include using namespace std;

bool a[10000002];

int main()

}int sum = 0;

for ( i = 2;i <= n; i++ )

}printf ( "%d\n", sum );

printf ( "time used = %.2lfs\n", (double)clock()/clocks_per_sec); //用時

}

以上程式我們會發現,其真實用時會很多有2.51s之多,那麼如何改進呢?

這是因為我們有好多重複的步驟在裡面。

我下面直接說最快捷的方法了

#include #include #include #include #include #include using namespace std;

bool a[10000002];

int main()

}int sum = 0;

for ( i = 2;i <= n; i++ )

}printf ( "%d\n", sum );

printf ( "time used = %.2lfs\n", (double)clock()/clocks_per_sec);

}

我們會發現這個**會極大的提高時間效率,大概在0.42s

**菜鳥,如有錯誤,請多包涵!!!

如果有幫助記得鼓勵我一下,謝謝!!!

求素數,求因數的方法

素數的定義是 自己總結 只能被1和自身整除的數。注意 1.最小的素數是2。2.1 既不是素數也不是合數。3.素數不包括負數。一般的求解素數的方法是 include includeusing namespace std bool isprime int n int main void filterpr...

求質數 素數 的方法

質數是數學重要的一環,所謂質數,就是除了1和它本身外不存在任何因子的數。以下整理了一下c語言中質數的求法。問題 輸入乙個正整數n n 2 求不大於n的全部質數 方法一 迴圈法 思路 判斷乙個數n是不是質數,可以用2到 n之間的所有整數去除n,如果都不能整除,那麼n是質數。設計迴圈巢狀時盡量跳過一些不...

求素數的幾種方法

素數,也稱為質數,其只能被1或者自身整除的自然數 不包括1 換而言之,只有兩個正因數的自然數稱為素數。與之相對的比1大但不是素數的自然數稱為合數。1和0既不是素數也不是合數,合數由若干個質數相乘得到。顯然根據定義就能判斷乙個數n是否為素數,具體的,對其從2到sqrt n 進行除法,判斷是否存在餘數為...