所以我陷入了这个问题,我想打印出所有素数求和的方法,等于给定的数字n: 这是我的代码
我的问题是,如果它是素数,我也希望在输出中有数字。 我不知道在哪里以及如何添加所需的代码。;(
我的意思是,如果n=2,它会给我一个空列表,但我想要[2]作为我的输出
n = int(input("between 2n75: "))
prime = []
for x in range(2, n+1):
for i in range(2, x):
if x % i == 0:
break
else:
prime.append(x)
listprimes = (prime)
#n = int(input("between 2n75: "))
#print(listprimes)
def allways(n, listprimes):
ways = [[prime] for prime in listprimes]
new_ways = []
collected = []
while ways:
for way in ways:
s = sum(way)
for prime in listprimes:
if prime >= way[-1]:
if s + prime < n:
new_ways.append(way + [prime])
elif s + prime == n:
collected.append(way + [prime])
ways = new_ways
new_ways = []
return collected
print(allways(n, listprimes))
改变
到
请注意,您的代码可以在许多地方进行优化
试试这个
您可以将以下两行插入到
allways
函数中,这两行收集类似[2]
的内容例如:
相关问题 更多 >
编程相关推荐