打表+求和..
#include"stdio.h" #include"math.h" int prime[10010]; int count; void fun() { count=0; int i,j,k; for(i=2;i<=10000;i++) { k=(int)sqrt(i); int flag=1; for(j=2;j<=k;j++) { if(i%j==0) { flag=0; break; } } if(flag==1) prime[count++]=i; } } int main() { int cas; int n; int i,l; int sum; fun(); while(scanf("%d",&n)!=EOF&&n) { int m; m=0;cas=0; for(l=0;l<count;l++) { sum=0; if(prime[l]>n) break; for(i=l;i<count;i++) { sum+=prime[i]; if(sum==n) { cas++;break; } else if(sum>n) break; } } printf("%d\n",cas); } return 0; }