#include <iostream> using namespace std; const int maxp=2000,n=10000; int prime[maxp],total=0; bool isprime(int k)//bool函数用来求素数 { for(int i=0;i<total;i++) if(k%prime[i]==0)//判断素数的一种方法(用这个数对数组当中所有的 素数 进行取余; return false; return true; } int main() { for(int i=2;i<n;i++) if(isprime(i)) prime[total++]=i;//total++是先用后加。此处之前的代码是把2~n之间的素数全部都存储到prime[total]数组中。 prime[total]=n+1; int m; cin>>m; while(m) { int ans=0;//用于计算个数 for(int i=0;prime[i]<=m;i++)//外层循环用来枚举所有的可能性 { int cnt=0;//求和 for(int j=i;j<total,cnt<m;j++)//内循环用来判断所求和的大小是否符合 cnt+=prime[j]; if(cnt==m) ++ans; } cout<<ans<<endl; cin>>m; } return 0; }