[英]determining if random Int is prime or not
當我需要確定數字x是否是質數時,我有一個小問題。 x將是隨機生成的正整數,執行代碼時會收到以下消息:
Your function fails on is_prime(2). It returns None when it should return True.
我的代碼:
def is_prime(x):
if x < 2:
return False
else:
for n in range(2, x):
while x % n == 0:
return False
break
else:
return True
我希望while循環遍歷n == 2直到n ==(x-1),但似乎沒有做到! 我究竟做錯了什么?
您可以更簡單地編寫此函數:
import math
def is_prime(n):
if n % 2 == 0 and n > 2:
return False
for i in range(3, int(math.sqrt(n)) + 1, 2):
if n % i == 0:
return False
return True
因此,您對is_prime(2)的調用不會通過if測試,也不會在for運行中使用,只會返回True。
如果所有其他質數都大於3並且不等於偶數,則應進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.