August 19, 2024
P36 - Determine the prime factors of a given positive integer (2)
Construct a list containing the prime factors and their multiplicity.
Example:* (prime-factors-mult 315)((3 2) (5 1) (7 1))
Hint: The problem is similar to problem P10.
lisp
(defun prime-factors (n)
(if (< 0 n)
(factors-above2 1 n)
()
)
)
(defun factors-above2 (k n)
(if (< n k)
()
(let ((l (factors-equal-to2 (+ 1 k) n)))
(if (= 0 (cadr l))
(factors-above2 (1+ k) (/ n (apply 'expt l))))
(cons l (factors-above2 (1+ k) (/ n (apply 'expt l))))
)
)
)
(defun factors-equal-to2 (k n)
(if (= 0 (mod n k))
(list k (factors-equal-to2 k (/ n k)))
(list k 0)
)
)