Python 'not in' 运算符工作不正常?

Python 'not in' operator not working correctly?

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 被 return 编辑为素数,而它显然不是素数,因为它可以被 3 整除....我不确定为什么代码不是工作正常吗?

当我输入:

step(4,300,400)

我期望得到 (307,311) 的输出,因为它们是相隔 4 个数字的前 2 个质数,但我得到的 return 为 (303, 307)

不确定我做错了什么?

您需要改用此语法:

if (value) not in set(notstorage) and (value+g) not in set(notstorage):

表达式

(value) and (value+g) not in set(notstorage)

检查 (value) 是否计算为 True,以及 (value+g) not in set(notstorage) 是否计算为 True

检查 (value)(value+g) 是否不在集合中。