我一直在尝试让这段代码返回2到49之间的质数作为输入数字,但它所做的只是将大多数数字作为质数返回,即使它们不是……在这个练习中,我得到的是3,5和7是质数,所以忽略这一点……
def prime(a):
if a < 2: return False
if a % 2 == 0: return False
if a == 3 or a == 5 or a == 7: return True
for n in range(3,int(a ** 0.5) + 1):
if a % n == 0: return False
if a % n != 0: return True
a = input("Enter a number between 1 and 49: ")
if prime(a) is False:
print a, " is not a prime number"
if prime(a) is True:
print a, " is a prime number"发布于 2012-10-18 06:14:26
for n in range(3,int(a ** 0.5) + 1):
if a % n == 0: return False
if a % n != 0: return True # This if condition is not needed你不需要第二个if条件。否则,当该数字不能被n的当前值整除时,它将立即返回。但你不会想这样的。如果当前的n不能除以你的数字,你需要检查下一个值。
因此,只需删除if,并在循环结束后添加一个return True。
所以,你的prime() 应该是这样的:-
def prime(a):
if a < 2: return False
if a % 2 == 0: return False
if a == 3 or a == 5 or a == 7: return True
for n in range(3,int(a ** 0.5) + 1):
if a % n == 0: return False
return Truehttps://stackoverflow.com/questions/12944228
复制相似问题