/**********
author:chanjun2016
email:15755396353@163.com
***********/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <algorithm>
using namespace std;
#define INF = 0x3f3f3f3f
const int maxn = 10000;
int n,tot;
int f[1500][maxn + 10];
bool ext[maxn + 10];
int p[maxn + 10];
int g[maxn + 10];
void prime(){
tot = 0;
for (int i = 2; i < maxn; ++i){
if (!ext[i]){
p[++tot] = i;
}
for (int j = 1; j <= tot && i * p[j] <= maxn; ++j){
ext[i * p[j]] = 1;
if (i % p[j] == 0){
break;
}
}
}
}
int main(){
prime();
for (int i = 0; i <= tot; ++i){
f[i][0] = 1;
}
for (int i = 1; i <= tot; ++i){
for (int j = p[i]; j <= maxn; ++j){
f[i][j] += f[i-1][j - p[i]];
g[j] += f[i][j];
}
}
while (scanf("%d",&n),n > 0){
printf("%d\n", g[n]);
}
return 0;
}
uva1210
最新推荐文章于 2019-08-09 13:17:00 发布