原题 https://projecteuler.net/problem=3
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
Haskell 解法
maxPF :: Integer -> Integer
maxPF n = maxPF' (floor.sqrt.fromInteger $ n)
where maxPF' x
| (n`rem`x==0 && prime x) = x
| (x == 1) = n
| otherwise = maxPF' (x-1)
prime :: Integer -> Bool
prime n
| (n < 2) = False
| otherwise = prime' 2
where
lim = (floor.sqrt.fromInteger) n
prime' a
| (a > lim) = True
| (n`rem`a==0) = False
| otherwise = prime' (a+1)
main = print.maxPF $ 600851475143