Project Euler Problems 1-3 15 Oct 2008
Tonight I’ve been using Haskell to tackle Project Euler. I thought I would share my solutions to the first three problems.
Problem 1
naiveAnswer = sum [x | x <- [1..999], x `mod` 3 == 0 || x `mod` 5 == 0]
betterAnswer = sumDiv 3 + sumDiv 5 - sumDiv 15
where sumDiv n = sum [n,n+n..999]
Problem 2
fibs = 1 : 1 : zipWith (+) fibs (tail fibs)
answer = sum . takeWhile (< 4000000) . filter even $ fibs
Problem 3
largestFactor :: Integer -> Integer
largestFactor n = search n 1 2
where search q f d | q == 1 = f
| q < d*d = q
| q `mod` d == 0 = loop (q`div`d) d d
| otherwise = loop q f (d+1)
answer = largestFactor 600851475143
I’d love to hear any comments on how Haskell-y these solutions are.