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

2024-07-08 11:11:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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整除。。。。我不知道为什么代码不能正常工作?在

当我输入:

^{pr2}$

我期望的输出是(307311),因为这是相隔4个数字的前2个质数,但是我得到的是(303307)

不知道我做错了什么?在


Tags: 代码inforifvaluedefsteprange
2条回答

您需要使用以下语法:

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

表达式

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

检查(value)的计算结果是否为True,而{}的计算结果是否为{}。在

它不检查(value)和{}是否都不在集合中。在

相关问题 更多 >

    热门问题