Problem 3
prime :: Integer -> [Integer] prime m = 2 : era [3,5..m] where era [] = [] era (p:xs) | p*p > m = p : xs | otherwise = p : era [x | x<-xs, x `mod` p /= 0] factor :: Integer -> [Integer] factor x = _factor x $ prime x where _factor 1 _ = [] _factor n (x:xs) | n `mod` x == 0 = x : _factor (n `div` x) (x:xs) | otherwise = _factor n xs maximum $ factor 600851475143