#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
#define Max 10020
#define Size 10010
bool isPrime[Max];
int primeTable[Max];
void primeRadiation(const int& size){
memset(isPrime,true,sizeof(isPrime));
isPrime[1]=false;
for(int i=4;i<=size;i+=2) isPrime[i]=false;
for(int i=3;i<=sqrt(size);++i){
if(isPrime[i]==true){
const int step=2*i;
for(int j=i*i;j<=size;j+=step) isPrime[j]=false;
}
}
}
int getPrimeTable(const int& size){
int index=0;
for(int i=1;i<=size;++i){
if(isPrime[i]==true){
++index;
primeTable[index]=i;
}
}
return index;
}
int main(){
primeRadiation(Size);
int t=getPrimeTable(Size);
int num;
while(cin>>num){
if(num==0) break;
int count=0;
for(int i=1;i<=t;++i){
int val=0;
for(int j=i;j<=t;++j){
val+=primeTable[j];
if(val==num) count++;
if(val>num) break;
}
}
cout<<count<<endl;
}
return 0;
}
POJ_2739_Sum_of_Consecutive_Prime
最新推荐文章于 2021-11-18 21:09:34 发布