要检查整数是否可以划分为素数分区?

时间:2019-02-14 17:46:16

标签: python

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))

1 个答案:

答案 0 :(得分:3)

您应该确定仅在循环结束后才发现一个质数,而没有找到可以除以给定数字的数字:

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