這屬於演算法上的問題,好好考慮一下演算法還要考慮一下素數的定義。
素數是只有1和本身能整除的整數。所以在求素數的時候,要將素數與1到素數本身中間的所有整數都相除,看是否有整除的數,如果有,那肯定不是素數了。但是從演算法上考慮,為了減少重複量,開平方後面的數就不用相除了
因為a/b(平方數)=c(小一點的數),同樣a/c=b。
舉例說明:
25,開平方以後是5,那麼整除2~5就可以了,如果有滿足條件的,就是素數。
這樣做可以減少迴圈次數,素數是因子為1和本身, 如果數c不是素數,則還有其他因子,其中的因子,假如為a,b.其中必有乙個大於根號c,乙個小於 根號c。所以m必有乙個小於或等於其平方根的因數,那麼驗證素數時就只需要驗證到其平方根就可以了
即乙個合數一定含有小於它平方根的質因子。
舉個例子:24的因數有1、2、3、4、6、8、12、24
按定義應該用2-23去除,但經過分析上面的數可以發現
1×24、2×12、3×8、4×6
如果2、3、4是某個數的因數,那麼另外幾個數也是,反之也一樣
所以為提高效率,可以只檢查小於該數平方根的那些數,如24的平方根大於4小於5,檢查2-4就可以了!
判斷乙個數是否為素數
判斷乙個數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 整除。演算法 判斷乙個數是否質數 素數 只需判斷有沒有乙個數可以整除這個數就...