@EBrown well, 6 lines in Haskell no big deal:
smallFactors n = [x | x <- [1..intSqrt n], mod n x == 0]
where intSqrt = (floor . sqrt . fromIntegral)
factors n = smalls ++ [n `div` i | i <- smalls]
where smalls = smallFactors n
isPrime n = factors n == [1, n]
main = print $ maximum $ filter isPrime $ factors 600851475143