检查奇数是否为 2p+q 形式的脚本

A script for checking whether any odd number is in the form 2p+q

我想制作一个 python 脚本,可以检查是否有任何奇数在 2p+q 形式上,其中 p 和 q 是两个素数,这是我的脚本,但我不知道为什么没用

prime1 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
prime2 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

def isit(x):
    for p in prime1:
        for q in prime2:
            if x == p+2*q or x == q+2*p:
                return 'It is'
            else:
                return 'It is not'
 
print(isit(7))

很明显7=2*2+3,但我写的脚本说'It is not',所以为什么它不起作用,它看起来对我来说很好。

在尝试了所有组合之前,您不能return“不是”。

for p in prime1:
    for q in prime2:
        if x == p+2*q or x == q+2*p:
            return 'It is'

return 'It is not'

试试这个

prime1 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
prime2 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

def isit(x):
    result = 'It is not'
    for p in prime1:
        for q in prime2:
            if x == p+2*q or x == q+2*p:
                result = 'It is'
    return result
 
print(isit(7))

输出

It is

检查 p = 2 和 q = 2! 然后你的脚本 returns 'It is not'.