Im应该创建一个函数,该函数接受整数,如果它是素数,则返回它,但由于某种原因,它返回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))发布于 2020-07-09 11:31:50
第一个数字要么是偶数,要么是素数。
9是代码中的bug真正显示的第一个数字。
错误是:如果一个测试失败,就返回“质数”。由于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):发布于 2020-07-09 11:34:44
您的代码将在第一次迭代时返回一个答案,此时它将停止迭代:
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"不过,这样做是可行的,因为只有当没有一个数字返回“非素数”时,它才会返回“质数”。
https://stackoverflow.com/questions/62813792
复制相似问题