【问题标题】:A script for checking whether any odd number is in the form 2p+q用于检查奇数是否为 2p+q 形式的脚本
【发布时间】:2021-08-16 18:56:58
【问题描述】:

我想制作一个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,但是我写的脚本说'不是',所以为什么它不起作用,它看起来对我来说很好。

【问题讨论】:

  • 如果它尝试的第一件事不起作用,您的脚本将返回。
  • 我该如何解决@Samwise
  • 旁注:您不需要复制素数集。

标签: python list algorithm primes


【解决方案1】:

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

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'

【讨论】:

    【解决方案2】:

    试试这个

    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
    

    【讨论】:

      【解决方案3】:

      检查 p = 2 和 q = 2! 然后你的脚本返回“不是”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-13
        • 2023-02-05
        • 2022-11-10
        • 1970-01-01
        相关资源
        最近更新 更多