首页 > 解决方案 > 检查整数是否可以划分为素数分区?

问题描述

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

我尝试了此代码,但这不适用于所有测试用例!例如 - 输入“185”,输出应该是“假”,但此代码返回“真”

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

标签: python

解决方案


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

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

推荐阅读