P2563
#include <bits/stdc++.h>
using namespace std;
int n,f[300],p[150],cnt=0,st[300];
void gp(int m){
for(int i= 2;i<=m;i++){
if(!st[i]) p[++cnt]=i;
for(int j=1;p[j]<=m/i;j++){
st[p[j]*i]=1;
if(i%p[j]==0) break;
}
}
}
int bag(){
for(int i=1;i<=cnt;i++){
for(int j=p[i];j<=n;j++)
f[j]+=f[j-p[i]];
}
}
int main(){
gp(200);
while(cin>>n){
memset(f, 0, sizeof(f));
f[0]=1;
bag();
cout<<f[n]<<endl;
}
return 0;
}
真的是看了:
一遍两遍三四遍,五遍六遍七八遍,九遍十遍无数遍,错因还是看不见。