簡體   English   中英

檢查某些東西是否是主要的蟒蛇?

[英]checking if something is a prime python?


def prime_check(num):
    if num>1:
        if num == 2:
                return True
        for i in range(2, num+1):
            if ((num%i) == 0):
                print(i)
                return False
            else:
                return True
    else:
        return False
prime_check(99)

當我使用值 99 時它應該為 false 時returns true (如素數)。為什么?

在循環中,只要輸入不能被循環中的當前數字整除,您就會返回 true。 因此,在第一次迭代中,當if條件檢查 99%2 == 0 時,如果是則返回false否則返回true 這就是為什么它返回True99%2 != 0

只需稍微更改您的代碼,就像您使用for....else

if (num >1):
    for i in range(2, num):
        if ((num%i) == 0):
            print(i)
            return False
    else:
        return True

您可以通過使用range(2,math.floor(math.sqrt(num)))減少循環range(2,math.floor(math.sqrt(num)))來改進程序:

for i in range(2,math.floor(math.sqrt(num))):
    //do the same

當 99 進入 for 循環時,它檢查是否99%2==0 ,因為它發現99%2!=0 else塊被執行,返回true並退出循環而不做進一步的迭代。 您需要更改代碼。

為了降低復雜性,您可以進一步使用 sqrt 函數。 你可以參考這個

def prime(num):
if num==1:
    return False
else:
    for i in range(2,num):
        if num%i==0:
            return False
return True

print(prime(17))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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