其實n不必被2~(n- 1)範圍內的各整數去除,只須將n被2~n/2間的整數除即可,甚至只須被2~√n
之間的整數除即可。例如,判斷17是否素數,只須將17被2, 3和4除即可,如都除不盡,n必為素
數。這樣做可以大大減少迴圈次數,提高執行效率。為方便,可以定義乙個整型變數k(其值為√n的整數部分); 如果n不能被2~k(即√n)之間的任一整數整除,則在完成最後一次迴圈後,i還要加1,因此i = k + 1, 然後才終止迴圈。在迴圈之後判別i的值是否大於或等於k + 1, 若是,則表明未曾被2~k之間任一整數整除過,因此輸出「是素數」。
#include
#include
int main()
演算法如圖:
程式改進參考 《c程式設計(第四版)》 譚浩強 著
判斷乙個數是否為素數
判斷乙個數n是否是素數,只需要判斷它是否能被2到n之間的數整除就行了,若不能被整除,則說明是素數。考慮到某數大於n 2時,n不可能被該數整除,故只需遍歷2 n 2即可。更進一步,由合數定理可知,若乙個數是合數,則它的最小質因數必小於等於該數的平方根,由此可得更為高效的 如下 include incl...
判斷素數 Python判斷乙個數是否為素數
素數的定義 乙個數如果只能被1和自身整除,則該數為素數。如果用程式設計的思維思考,則是說,如果乙個數被比它小的數 1除外 整除後餘數為0,則說明這個數可以被其他數整除,則該數為合數,否則該數為質數。python 如下 注釋 range 的起始值應該設為2,如果起始值設為1,則會第一次列印說該數是合數...
判斷乙個數是否為質數(素數)
從鍵盤上輸入乙個數,判斷這個是數是否為質數 素數 質數 素數 除了1和它本身不能被其它數整數的數。如果 i,n 都是整數,那麼 i n 0,那麼就稱 i 是 n 的倍數,n 是 i 的約數或者因數,n 整除 i,i 被 n 整除。演算法 判斷乙個數是否質數 素數 只需判斷有沒有乙個數可以整除這個數就...