範例程式碼 uva1210
//uva1210
#include <iostream>
#define Max 10001
using namespace std;
void MakePrime(int Prime[], int &Cnt) {
int table[Max] = {};
for(int i = 2; i < Max; ++i) {
if(!table[i]) {
Prime[Cnt++] = i;
for(int j = 2; i * j < Max; ++j)
table[i*j] = 1;
}
}
}
int main() {
int Prime[Max] = {};
int Cnt = 1;
MakePrime(Prime, Cnt);
int PreSum[Max] = {};
PreSum[0] = Prime[0];
for(int i = 1; i < Cnt; ++i)
PreSum[i] = Prime[i] + PreSum[i-1];
int dif[Max] = {};
for(int i = 0; i < Cnt; ++i)
for(int j = i + 1; j < Cnt; ++j)
if(PreSum[j] - PreSum[i] < Max)
++dif[ PreSum[j] - PreSum[i] ];
int n;
while(cin >> n && n)
cout << dif[n] << endl;
return 0;
}