我一直试图让这段代码在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"
答案 0 :(得分:5)
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
你不需要第二条件。否则当数字不能被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 True