1 条题解
-
0Guest LV 0 MOD
-
0
#include <cstdio> #include<iostream> using namespace std; int prim[3512],i,j,cnt,x; //3512是打表计算的精确值 void prime(void) { bool pd; prim[0]=2,prim[1]=3; cnt=1; for(i=5; i<=32767; i++) { pd=true; for(j=0; j<=cnt; j++) if (i%prim[j]==0) { pd=false; break; } if (pd) prim[++cnt]=i; } } int cal(int x) { int k2,ans=0,tmp; int k1=0; while(prim[k1]<=x) { k2=k1; tmp=prim[k2]; while(tmp<x) tmp+=prim[++k2]; if(tmp==x) ans++; k1++; } return ans; } int main() { prime(); cin>>x; while(x!=0) { cout<<cal(x)<<endl; cin>>x; } return 0; }
- 1