August 19, 2024
P35 - Determine the prime factors of a given positive integer.
Construct a flat list containing the prime factors in ascending order.
Example:* (prime-factors 315)(3 3 5 7)
lisp
(defun prime-factors (n)
(if (< 0 n)
(factors-above 1 n)
()
)
)
(defun factors-above (k n)
(if (< n k)
()
(let ((l (factors-equal-to (+ 1 k) n)))
(append l (factors-above (1+ k) (/ n (apply '* l))))
)
)
)
(defun factors-equal-to (k n)
(if (= 0 (mod n k))
(cons k (factors-equal-to k (/ n k)))
()
)
)