main = interact $ unlines . map (show . goldbach . read) . takeWhile (/="0") . lines

goldbach x = if odd x then 0 else count 0 (takeWhile (<x) primes)
 where
  count n [] = n
  count n (p:ps)
   | elem (x-p) (p:ps) = count (n+1) ps
   | otherwise = count n ps

primes = 2:3:[x | i<-[1..], j<-[-1,1], let x = 6*i+j, isPrime x]
 where isPrime n = null [i | i<-takeWhile (\x -> x*x <= n) primes, rem n i == 0]