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