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

void sieve(int n,vector<char>& v){
    v.resize(n+1);
    fill(v.begin(),v.end(),true);
    v[0]=v[1]=false;

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

int main(){
    vector<char> is_prime;
    vector<int> prime_list;

    sieve(50000,is_prime);

    for(int i=0;i<is_prime.size();i++){
        if(is_prime[i]){
            prime_list.push_back(i);
        }
    }

    int n;

    while(cin>>n,n){
        int pr=0;

        for(int i=0;i<prime_list.size();i++){
            if(prime_list[i]+prime_list[i] > n) break;

            if(binary_search(prime_list.begin(),prime_list.end(),n-prime_list[i])){
                pr++;
            }
        }

        cout<<pr<<endl;
    }

    return 0;
}