python - 检查整数是否可以划分为素数分区?
问题描述
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))
解决方案
您应该仅在循环结束后确定一个数字是素数,而没有找到可以除以给定数字的数字:
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
推荐阅读
- javascript - Javascript: Removing part of a string ( get date string )
- reactjs - 到达路由器:在功能单击时重定向到 url
- ios - 表视图数据被覆盖
- javascript - 坦克!Unity 目前正在尝试添加一个健康拾取项目
- python - 使用正则表达式从熊猫系列字符串中删除单词
- java - 无法延迟初始化角色集合。简单的 JPA findById
- c# - 拦截和修改请求体
- python - Python3 - 在yaml中写回相同的流
- python - 如何使用 Dask 进行更快的语言检测?
- postgresql - 无法根据 PostgreSQL 中另一个表中的数据过滤一个表的行