[英]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
。 這就是為什么它返回True
為99%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.