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

2021-10-16 17:40:20 字數 1190 閱讀 6796

演算法一:針對輸入的數字x,我們可以遍歷從2到x-1這個區間中的數,如果x能被這個區間中任意乙個數整除,那麼它就不是質數。

def is_prime1(x):

for i in range(2, x):

if num % i == 0:

return false

return true

演算法二:對演算法一的優化,事實上只需要遍歷從2到√x即可。

def is_prime2(x):

for i in range(2, int(x ** 0.5) + 1):

if x % i == 0:

return false

return true

演算法三:偶數中除了2都不是質數,且奇數的因數也沒有偶數,因此可以進一步優化。

def is_prime3(x):

if x == 2:

return true

elif x % 2 == 0:

return false

for i in range(3, int(x ** 0.5) + 1, 2):

if x % i == 0:

return false

return true

演算法四:任何乙個自然數,總可以表示成以下六種形式之一:6n,6n+1,6n+2,6n+3,6n+4,6n+5(n=0,1,2...)我們可以發現,除了2和3,只有形如6n+1和6n+5的數有可能是質數。且形如6n+1和6n+5的數如果不是質數,它們的因數也會含有形如6n+1或者6n+5的數,因此可以得到如下演算法:

def is_prime4(x):

if (x == 2) or (x == 3):

return true

if (x % 6 != 1) and (x % 6 != 5):

return false

for i in range(5, int(x ** 0.5) + 1, 6):

if (x % i == 0) or (x % (i + 2) == 0):

return false

return true

**:

高效判斷素數方法

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...

C語言 判斷是否為素數

include void main else if isprime 1 else else 當輸入的是 1時,結束程式的判斷 while a 1 編寫這個程式的時候遇到了兩個小問題,問題一是 當我單次輸入數字 5 判斷它是否為素數時,結果是正確的 而當我連續輸入數字判斷時,判斷到 5 後結果卻是錯的...

Python 判斷是否為質數或素數

乙個大於1的自然數,除了1和它本身外,不能被其他自然數 質數 整除 2,3,5,7等 換句話說就是該數除了1和它本身以外不再有其他的因數。首先我們來第乙個傳統的判斷思路 def handlernum num 質數大於 1 if num 1 檢視是否有其他因子 for i in range 2,num...