题目:
一些正整数能被表示成一个或者多个连续质数的和。那一个数会有多少种这样的表示方式呢?比如41可以表示成2+3+5+7+11+13,11+13+17,41三种
输入:
41
输出:
3
思路,将小于等于n的所有质数有序放入列表,再将列表开始遍历,从第一个数开始,累加后面的多个数,如果累加为n则记一次数,如果累加超过n就跳出累加,再从第二个数开始,知道最后一个数。计数结果就是最后输出结果。
代码如下:
n = int(input())
def sushu(num):
if num == 2:
return 1
elif num == 0 or num == 1:
return 0
else:
c = 0
for i in range(2,num+1):
if num % i == 0:
c = c + 1
if c > 1:
return 0
else:
return 1
list1 = []
for i in range(2,n+1):
if sushu(i) == 1:
list1.append(i)
z = 0
for j in range(len(list1)):
s = 0
i2 = j
while s < n and i2<=len(list1)-1:
s = s + list1[i2]
i2 = i2 + 1
if s == n:
z = z + 1
print(z)
还有一题是漫展那题,就是个基础的01背包问题,但是我用动归求解样例通过了,正式的就是过不了,我也不知道为什么。背包问题的求解前面有附链接
https://blog.csdn.net/jhm851405185/article/details/107857325