#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
#include <stack>
#include <set>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;

int a , b;

void sieve(bool* pn){
		for(int i=2;i<sqrt(50000.);++i){
		if(pn[i]){
			for(int j=i*2;j<50000;j+=i){
				pn[j]=false;
			}
		}
	}
}

int main(){
	bool pn[50000];
	bool used[50000];
	memset(pn , true , sizeof(pn));
	memset(used , false ,sizeof(used));
	pn[0]=pn[1]=false;
	sieve(pn);
	int i , j , n , cnt;
	while(cin >> n , n){
		cnt=0;
		for(i=2;i<=50000;++i){
			for(j=2;j<=50000;++j){
				if(pn[i]){
					if(pn[j]){
						if((i+j)==n && !used[j]) {cnt++; used[i]=true ; break;} 
						if((i+j)>n) break;
					}
				}
				if(j>n) break;
			}
			if(i>n) break;
		}
		cout << cnt << endl;
	}
	
	return 0; 
}