// 2011/06/22 Tazoe

#include <iostream>
using namespace std;

void sieve(bool is_prime[], int n)
{
	for(int i=0; i<n; i++)
		is_prime[i] = true;

	if(n>=1)
		is_prime[0] = false;
	if(n>=2)
		is_prime[1] = false;

	for(int i=2; i<n; i++)
		if(is_prime[i])
			for(int j=i+i; j<n; j+=i)
				is_prime[j] = false;
}

int main()
{
	bool is_prime[1000001];
	sieve(is_prime, 1000001);

	while(true){
		int n;
		cin >> n;
		if(n==0)
			break;

		int cnt = 0;
		for(int p=2; p<=n-p; p++)
			if(is_prime[p]&&is_prime[n-p])
				cnt++;

		cout << cnt << endl;
	}

	return 0;
}