(loop [number 600851475143 divisors ()] (if (> number 1) (let [div (or (some #(if (zero? (mod number %)) % false) (cons 2 (range 3 (/ number 2) 2))) number)] (recur (/ number div) (cons div divisors))) (println (apply max divisors))))