46問目
http://projecteuler.net/index.php?section=problems&id=46
Christian Goldbachは、「素数でない奇数は全て、平方数の2倍と素数の和として表せる」と予想したが、これは誤りだった。この予想を満たさない最小の数を求める。
どう表現するかというところはありますが、問題自体はそれほど難しくありません。
main = print $ euler046 euler046 :: Integer euler046 = head [ x | x <- [3,5..], (not . isPrime) x, all (not . isPrime) $ takeWhile (> 0) $ [ x-2*(n^2) | n <- [1..] ] ] isPrime :: Int -> Bool isPrime x = all ((/= 0) . mod x) $ takeWhile (<= (floor $ sqrt $ fromIntegral x)) primes primes :: [Integer] primes = 2 : filter isPrime [3..]