#include<iostream>
#include<cmath>
using namespace std;
const int MAX_SIZE = 1000000;
bool p[MAX_SIZE+1];
int p_num[MAX_SIZE+1];
int p_count;

void prime_set(int MAX){
        p_count=0;
	p[0] = p[1] = false;
	for(int i=2; i<=MAX; i++) p[i] = true;
	int LIMIT = (int)sqrt(MAX);
	for(int i=2; i<=LIMIT; i++){
		if(p[i]){
			for(int j=2*i; j<=MAX; j++){
				if(j%i==0)
					p[j]=false;
			}
		}
	}
	
	for(int i=2; i<=MAX; i++){
		if(p[i]){
			p_num[p_count] = i;
			p_count++;
		}
	}
	
}

void slove(int n){
	int p,q,count=0;
	int k=0;
	while(p<(n/2)){
			p=p_num[k];
			for(int j=0; j<p_count; j++){
				q=p_num[j];
				if(p+q == n){
				 count++;
				}
			}
		k++;
	}
	cout << count << endl;
}

int main(){
	int n;
	while(cin >> n){
		if(n==0) break;
		prime_set(n);
		slove(n);
	}
	return 0;
}