2019可以被分解成若干个两两不同的素数,请问不同的分解方案有多少种?
注意:分解方案不考虑顺序,如2+2017=2019和2017+2=2019属于同一种方案。
答案:55965365465060
若干个两两不同的素数,可以有三个四个!!
#include<iostream>
#include<cmath>
using namespace std;
const int N=2050;
int prime[N];
int cnt;
long long f[N][N];
bool isprime(int x){
for(int i=2;i<=x/i;i++){
if(x%i==0)
return false;
}
return true;
}
int main()
{
int n;
cin>>n;
for(int i = 2; i <= n;i++) {
if(isprime(i)){
prime[++cnt] = i;
}
}
f[0][0]=1;
for(int i=1;i<=cnt;i++){
for(int j=0;j<=n;j++){
f[i][j]=f[i-1][j];
if(j>=prime[i])f[i][j]+=f[i-1][j-prime[i]];
}
}
cout<<f[cnt][n]<<endl;
return 0;
}