wvogel日記

自分用の技術備忘録が多めです.

Goldbach

f :: Integral a => a -> a
f n = sum $ map (check.(\a -> [a , n-a]))  [2..div n 2]

check :: Integral a => [a] -> a
check ab = case all prime ab of
                True  -> 1
                False -> 0

prime :: Integral a => a -> Bool
prime 1 = False
prime 2 = True
prime n = all ((/=0).(mod n)) [2..floor.sqrt $ fromIntegral n]

main = getLine >>= print.f.read

入力された数に対して、
その数は、Goldbachを満たす組み合わせをいくつもつか出力。