summaryrefslogtreecommitdiff
path: root/haskell/p10.hs
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