Problem 3
http://projecteuler.net/index.php?section=problems&id=3
-- Prime.hs module Prime (primes, primeFactors) where primes :: [Integer] primes = 2 : filter isPrime [3,5..] isPrime :: Integer -> Bool isPrime q = all ((/= 0) . mod q) belowPrimes where belowPrimes = takeWhile (<= (floor . sqrt . fromIntegral) q) primes primeFactors n = f n primes where f 1 _ = [] f n ps@(p:ps') | n `mod` p == 0 = p : f (n `div` p) ps | otherwise = f n ps'
import Prime main = print $ last $ primeFactors 600851475143