#include<iostream>
#include<cstring>

using namespace std;

int p[1000000];
int pt[1000000];
int pn;

int dp[1000001];

void init(){
  memset(p,1,sizeof(int)*1000000);
  memset(pt,0,sizeof(int)*1000000);
  memset(dp,0,sizeof(int)*1000001);
  p[0] = p[1]  = 0;
  for(int i =0; i < 1000; i++){
    if(p[i]){
      for(int j = i +i;j < 1000000;j +=i){
	p[j] = 0;
      }
    }
  }
  pn =0;
  for(int i = 0; i < 1000000;i++){
    if(p[i]){
      pt[pn] = i;
      pn++;
    }
  }

  for(int i = 0 ; i< pn; i++){
    for(int j =i; j < pn; j++){
      if(pt[i]+pt[j] > 1000000){
	break;
      }
      dp[pt[i]+pt[j]]++;
    }
  }
}

int main(){
  int in;
  init();
  while(1){
    cin>>in;
    if(!in){
      break;
    }
    cout << dp[in] << endl;
  }
}