问题是我的代码打印
"The number you entered is prime"
很多次取决于我输入的数字,然后是
"That number is not prime"
如果数字不是素数。我知道为什么它这样做(这是因为if语句继续循环返回for循环,直到它找到一个均匀分割的数字,然后它打印出“not prime”结果),但我问的是我是怎么做的解决它?
def isprime(n):
try:
npnc = "Neither prime nor composite"
if isinstance(n, complex) == True:
print("Sorry, trial division doesn't like negative numbers. Try again.")
elif n == 0:
return npnc
elif n == 1:
return npnc
else:
for m in range(2, (int(n**.5)+1)):
if n%m == 0:
print("That number is not prime")
break
elif n%m > 0:
print("The number you entered is prime")
注意:它确实有一个“我没有包含的”ValueError“。
答案 0 :(得分:1)
在这种情况下,您可以使用for..else
。如果你没有突破循环,那么程序会在else
之后执行for
部分。
for m in range(2, (int(n**.5)+1)):
if n%m == 0:
print("That number is not prime")
break
else:
print("number is prime")
与:
相同found = False
for m in range(2, (int(n**.5)+1)):
if n%m == 0:
print("That number is not prime")
found = True
break
if not found:
print("number is prime")
答案 1 :(得分:0)
在你的函数中使用它 - 分解任务总是很好,而在这个的情况下,它允许早期返回:
def isprime_impl(n):
for m in range(2, (int(n**.5)+1)):
if n%m == 0:
return False
return True