module Main where
primes = 2 : [i | i <- [3..],
and [rem i p > 0 | p <- takeWhile (\p -> p^2 <= i) primes]]
primeFactors n = filter (\a -> mod n a == 0) (takeWhile (\m -> m * m < n) primes)
main = do
print (last (primeFactors 600851475143))