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

goldbach n = if odd n then 0 else length [(x,y) | x<-primes', y<-primes', x<=y, x+y==n]
 where primes' = takeWhile (<n) primes

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]