我想用递推做,但明显存在重复问题
希望各位大佬指点两句
#include <bits/stdc++.h>
using namespace std;
int a[2000],dp[2000]={0,0,1};
bool p(int n){
if(n==0 || n==1)return false;
for(int i=2;i*i<=n;i++){
if(n%i==0)return false;
}
return true;
}
int main(){
int n;
cin >> n;
int c=1;
for(int i=1;i<=n;i++){
if(p(i))a[c++]=i;
}
c--;
for(int i=3;i<=n;i++){
for(int j=1;j<=c;j++){
dp[i]+=dp[i-a[j]];
}
}
cout << dp[n];
return 0;
}