所以我只想查看我的功能有什么问题。它给出素数就好了但是当我输入一个像4这样的数字时,它打印出“4不是素数”然后“4是素数”。 什么似乎是错误? (我知道这很难过,但我花了8个小时做这个(初学者))。
def isprime(n):
if n == 1:
print ("1 is not prime.")
if n == 2:
print ("2 is a prime number.")
for x in range (2, n):
if n%x == 0:
print (n, "is not prime.")
if n%x != 0:
print (n, "is a prime number.")
答案 0 :(得分:4)
您的算法错误,您需要在检测到因子后中断,如果没有因素,则打印是素数。
以下是更正后的版本:
def isprime(n):
if n == 1:
print ("1 is not prime.")
return
if n == 2:
print ("2 is a prime number.")
return
for x in range (2, n):
if n%x == 0:
print (n, "is not prime.")
break
else:
print (n, "is a prime number.")
答案 1 :(得分:0)
您应该在break
下添加print(n, "is not prime.")
语句,否则它将继续遍历所有数字,直到n,这是不必要的。