簡體   English   中英

為什么我的素數函數不起作用?

[英]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所說,您在檢查第一個值后立即返回TrueFalse 相反,僅在檢查范圍內的所有值后才返回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM