blob: e7a7c8564cb5d5b67420bb185412a7822dd6078b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
|
sieve :: Int -> [Int]
sieve max = sieve_l [2..max] (floor . sqrt . fromIntegral $ max)
where
sieve_l [n] _ = [n]
sieve_l (n:xl) max_sqrt
| n > max_sqrt = n:xl
| otherwise = n : sieve_l (filter ((/= 0).(`mod` n)) xl) max_sqrt
p10 :: Int
p10 = sum $ sieve 2000000
main = putStrLn $ "Solution: " ++ show p10
|