#include<stdio.h>
#include<math.h>
int sushu[10000] = { 2,0 };
int k = 0;//全局变量,用来标志此时已有多少个素数
int judge(int n) {//判断是否为素数
int i;
if (n == 2) {
return 1;
}
for (i = 2; i <= sqrt(n); i++) {
if (n%i == 0) {
return 0;
}
}
return 1;
}
int main() {
int a;//所要输入的数
scanf("%d", &a);
int flsg;
int i;
int x;//所求数
while (a != 0) {
x = 0;
if (a > sushu[k]) {//将素数存入数组中
if (sushu[k] == 2) {
i = sushu[k] + 1;
}
if (sushu[k] != 2) {//2已经存入数组
i = sushu[k] + 2;
}
for (; i <= a; i = i + 2) {//可以从已找到的最大数组开始向后找
//后面的至少为单数
if (judge(i)) {
sushu[++k] = i;
}
}
}
for (i = 0; i <= k; i++) {//先找素数中的数,找到一个
if (a < sushu[i]) {//加入的数越多,数组中保存的素数的值可能大于分解值,直接跳出
break;
}
flsg = a - sushu[i];//减去之后判断剩下的数是否为素数
if (judge(flsg) && sushu[i] != flsg) {
x++;
}
}
printf("%d\n", x / 2);//因为找的加数都是素数,又是按顺序找的,所以重复
scanf("%d", &a);
}
return 0;
}