def step(g, m, n):
notstorage=[]
actualvalues =[]
for i in range(m, (n+1)):
for primechecker in range(2,i):
if i % primechecker == 0:
notstorage.append(i)
for value in range(m, (n+1)):
if (value) and (value+g) not in set(notstorage):
actualvalues.append(value)
actualvalues.append(value+g)
break
return(actualvalues)
在上面的代码中,我试图找出哪些数字是素数并创建一个列表来检查是否有两个素数被某个数字 (g) 分隔。我遇到了问题,因为由于某种原因,数字 303 被作为质数返回,而它显然不是,因为它可以被 3 整除....我不确定为什么代码不能正常工作?
当我输入:
step(4,300,400)
我期待 (307,311) 的输出,因为它们是前 2 个相隔 4 个数字的素数,但我得到 (303, 307) 的返回
不知道我做错了什么?