#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> sieve(int n) {
  vector<int> prime(n);
  for(int i=2; i<n; i++) prime[i]=i;
  for(int i=2; i*i<n; i++) {
    if(prime[i]) {
      for(int j=i*i; j<n; j+=i) prime[j]=0;
    }
  }
  prime.erase(remove(prime.begin(), prime.end(), 0), prime.end());
  return prime;
}

int main() {
  vector<int> prime=sieve(1000000);
  while(1) {
    int n, cnt=0;
    cin >> n;
    if(n==0) break;
    int check=0;
    for(vector<int>::iterator it=prime.begin(); *it<=n/2; it++) {
      int x=*it, t;
      t=distance(prime.begin(), lower_bound(prime.begin(),prime.end(), n-x));
      if(x+prime[t]==n) cnt++;
    }
    cout << cnt << endl;
  }
  return 0;
}
