Project Euler Problem #3
Largest prime factor of 600851475143:
let primeFactors n =
let isFactor n d = n % d = 0L
let nextFactor n d = seq {d..n} |> Seq.find (isFactor n)
(n, 2L, []) |> Seq.unfold (fun (n, d, a) ->
if isFactor n d then Some(d, ((n / d), d, (d :: a)))
elif n > d then Some(d, (n, nextFactor n d, a))
else None)
600851475143L |> primeFactors |> Seq.max