我应该创建一个函数,该函数接受整数并返回是否为质数,但由于某种原因,它返回9作为质数
def prime(x):
if x == 0 or x == 1:
return "not prime"
elif x == 2:
return "prime"
else:
for numbers in range(2,x):
if x % numbers == 0:
return "not prime"
else:
return "prime"
for i in range(20):
print (i, prime(i))
答案 0 :(得分:2)
第一个数字是偶数或素数。
9是代码中真正显示错误的第一个数字。
错误是:如果一项测试失败,则返回“ prime”。由于9 % 2
不为0,因此测试在那里失败。
(天真)重写为:
for numbers in range(2,x):
if x % numbers == 0:
return "not prime"
return "prime"
因此,如果循环结束而不返回数字,则为质数。
请注意,有更好更好的方法来测试素数。例如,不要循环到x-1
,而要循环到x
(包括)的平方根,因为在该值之后不能存在除数。
for numbers in range(2,int(x**0.5)+1):
答案 1 :(得分:0)
您的代码将在第一次迭代时返回答案,此时它将停止迭代:
for numbers in range(2,x):
if x % numbers == 0:
return "not prime"
else:
return "prime"
这从2开始,如果它均匀地变成x,则它不返回质数,如果不相等,则返回质数,并且以任何一种方式停止。
for numbers in range(2,x):
if x % numbers == 0:
return "not prime"
return "prime"
这可以解决问题,因为如果没有数字返回“不是素数”,它只会返回“素数”。