检查某个东西是否是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)

returns true(如in是素数(,当我使用值99时它应该为false。为什么?

在循环中,只要输入不能被循环中的当前数字整除,就会返回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))):减小循环的范围来改进程序

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

当99进入for循环时,当它发现99%2!=0else块被执行时,它检查99%2==0是否返回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))

最新更新