【发布时间】:2022-11-17 11:44:52
【问题描述】:
num=int(input("enter the no: "))
def Prime(num):
"""Check whether a no is prime or not"""
for i in range(2,num):
if num%i==0:
print(num," is not prime no")
break
else:
print(num,"is prime no")
break
print(Prime(num))
虽然输出是这样的
enter the no: 45
45 is prime no
None
这段检查素数的代码有什么问题,以及为什么在输出中打印“无”。我如何在这里使用返回。 对于某些不正确的输出,如 97,输出是正确的,但对于 45,输出是错误的。 非常感谢您的建议。
【问题讨论】:
-
您只检查是否可以被 2 整除。无论是真还是假,您都执行
break,并且循环不会继续执行任何更高的可能除数。 -
如果我删除 break 然后它迭代范围高达 num 并返回输出作为素数而不是素数 45
-
我将如何遍历范围并相应地打印输出?假设如果 i=2 那么它将转到 else 语句并打印 no is prime 并且它不会遍历范围。