质数分解
def cheak(x):
for i in range(2,int(x**0.5)+1):
if x%i==0:
return True
return False
a=[2,3]
for i in range(4,2020):
if not cheak(i):
a.append(i)
a=set(a)
n=len(a)
a=list(a)
dp=[[0]*2020 for i in range(n+1)]
for i in range(n+1):
dp[i][0]=1
for i in range(1,n+1):
for j in range(2020):
if j>=a[i-1]:
dp[i][j]=dp[i-1][j]+dp[i-1][j-a[i-1]]
else:
dp[i][j]=dp[i-1][j]
print(max(dp[n]))