【问题标题】:To check if an Integer can be divided into a Prime Partition?检查整数是否可以划分为素数分区?
【发布时间】:2019-02-15 02:17:48
【问题描述】:

Python 函数 partition() 以整数 m 作为输入,如果 m 可以被分割为素数,则返回 True,否则返回 False。

我试过这个代码,但这不适用于所有测试用例!例如 - 输入“185”输出应为“False”,但此代码返回“True”

def partition(num):
    primelist = primes(num)
    for x in primelist:
        y= num-x
        if y in primelist:
            return True
        else:
            return False

def primes(num):
    primelist=[]
    for i in range(2,num + 1):
        for p in range(2,i):
            if (i % p) != 0:
                primelist.append(i)
    return primelist

print(partition(185))

【问题讨论】:

  • 您确定primes() 工作正常吗?
  • 我发现了故障,在这个线程中检查@blhsing 建议的修复。

标签: python


【解决方案1】:

你应该只在循环结束后确定一个数是素数,但没有找到可以整除给定数的数:

def primes(num):
    primelist=[]
    for i in range(2,num + 1):
        for p in range(2,i):
            if (i % p) == 0:
                break
        else:
            primelist.append(i)
    return primelist

同样,你应该确定一个数字只有在循环结束后才能被两个素数分割:

def partition(num):
    primelist = primes(num)
    for x in primelist:
        y= num-x
        if y in primelist:
            return True
    return False

【讨论】:

  • 带有partition(3432)的测试用例应该返回True,在这种情况下代码输出False
  • 我已经更新了我的答案,指出您的代码存在的另一个问题。
猜你喜欢
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
  • 2021-04-09
  • 2020-09-03
相关资源
最近更新 更多