[英]Why is my prime number function not working?
我是編程新手,在嘗試編寫查找素數的程序時遇到問題。 這是我的代碼:
def is_prime(x):
if x < 2:
return False
elif x == 2:
return True
else:
for n in range (2,x-1):
if x % n == 0:
return False
else:
return True
我收到一條錯誤消息,指出“您的函數在is_prime(3)上失敗。在應返回True時返回None。”
有人可以解釋一下此代碼中的缺陷嗎?
謝謝!
range()
有一個專有的上限 ,因此它試圖獲取2到2(3-1)之間的范圍,該范圍沒有任何元素。 由於您無法遍歷任何內容,因此for循環永遠不會運行,因此將返回None
(如果未指定,則為函數的默認返回類型)。
解決您當前問題的方法是使用range(2, x)
而不是range(2, x - 1)
。 您會發現在x> 3時會遇到問題,因為正如@khelwood所說,您在檢查第一個值后立即返回True
或False
。 相反,僅在檢查范圍內的所有值后才返回True
。
def is_prime(x):
if x < 2:
return False
elif x == 2:
return True
else:
for n in range (2,x): # range function will iterate till x-1
if x % n == 0:
return False
# return true only at the end after making sure it is not divisible by any number in the middle
return True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.