Project Euler Problem 10
http://projecteuler.net/index.php?section=problems&id=10
200万以下の素数の和
main = print $ foldl1 (+) (primeList 1 2000000) primeList :: Integer -> Integer -> [Integer] primeList n max = let x = nextPrime n in if x > max then [] else [x] ++ (primeList x max) --以下Problem 7から nextPrime :: Integer -> Integer nextPrime n = if n < 2 then 2 else head $ filter (\n -> isPrime n) [x | x <- [n+1..], odd x] isPrime :: Integer -> Bool isPrime 1 = False isPrime n = null [x | x <- [2..floor $ sqrt $ fromInteger n], n `mod` x == 0]