【发布时间】:2020-04-21 17:25:18
【问题描述】:
def primecheck(num):
if num > 1:
for i in range(2, num):
if (num % i) == 0:
return False
break
else:
return True
我正在尝试创建一个函数来检查输入是否为素数。如果我输入质数,此代码确实返回 True,但每当我输入质数的倍数时它也会输入 true?为什么会这样
谢谢
【问题讨论】:
-
只有在检查范围内的所有数字都不能整除 num 时才应该返回 True。
-
这不适用于什么输入?
-
@BilltheLizard 正如我所说,素数的倍数,如 15、35、49 等
-
return代码停止后,因此您的i变为 2 然后它在 if 或 else 块中返回。所以只有你检查的i是 2。你应该只在 for 块之后返回 True。 -
问题出在你的 if-else 上。假设你的号码是 15。然后从 2 到 14,for 循环将执行。所以只有第一次 (15%2!=0) 所以它将进入 else 语句并返回 True 而不进一步执行循环。
标签: python