http://acm.hdu.edu.cn/show
#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;const int maxn = ;int np, pri[maxn+], vis[maxn+];void prime_table(int n) { np = ;
memset(vis, , sizeof(vis));
vis[] = vis[] = ; for (int i = ; i <= n; i++) {
if (vis[i])
continue; pri[np++] = i;
for (int j = i * i; j <= n; j += i)
vis[j] = ;
}
}int main () {
int n;
prime_table(maxn);
while (scanf("%d", &n) == ) {
int ans = ;
for (int i = ; i < np; i++) {
for (int j = i; j < np; j++) {
if (pri[i] + pri[j] >= n)
break;
int t = n - pri[i] - pri[j]; if (vis[t] == && t >= pri[j])
ans++;
}
}
printf("%d\n", ans);
}
return ;
}
problem.php?pid=5104