#include <bits/stdc++.h>
#define MAX_N 50000
using namespace std;
int prime[MAX_N+1];
bool is_prime[MAX_N+1];

bool isPrime(int n) {
    for(int r = 2; r * r <= n; r++) {
        if(n % r == 0) return(false);
    }
    return(true);
}

int init() {
    int p = 0;
    memset(is_prime, true, sizeof(is_prime));
    is_prime[0] = is_prime[1] = false;
    for(int r = 2; r * r <= MAX_N; r++) {
        if(is_prime[r]) {
            prime[p++] = r;
            for(int c = 2 * r; c <= MAX_N; c+=r) {
                is_prime[c] = false;
            }
        }
    }
    return(p);
}


void solve(int num) {
    int cnt = 0;
    int same = 0;
    /*方法１
    for(int r = 0; prime[r] < num; r++) {
        for(int c = 0; prime[c] + prime[r] <= num; c++) {
            //cout << prime[r] << " + " << prime[c] << " = 10?" << endl;
            if(prime[r] + prime[c] == num) {
                cnt++;
                if(prime[r] == prime[c]) same++;
            }
        }
    }
     */
    
    for(int r = 0; prime[r] < num; r++) {
        if(isPrime(num - prime[r])){
            cnt++;
            if(prime[r] == num - prime[r]) same++;
        }
    }
    
    if(cnt > 0) cout << (cnt/2)+same << endl;
    else        cout << 0 << endl;
}

int main(void) {
    int num;
    init();
    while(cin >> num, num != 0) {
        if(num % 2 != 0) {cout << 0 << endl; continue;}
        solve(num);
    }
    return(0);
}