RosettaCodeData/Task/Prime-decomposition/Common-Lisp/prime-decomposition-1.lisp

9 lines
312 B
Common Lisp
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
;;; Recursive algorithm
(defun factor (n)
"Return a list of factors of N."
(when (> n 1)
(loop with max-d = (isqrt n)
for d = 2 then (if (evenp d) (+ d 1) (+ d 2)) do
(cond ((> d max-d) (return (list n))) ; n is prime
((zerop (rem n d)) (return (cons d (factor (truncate n d)))))))))