Plaster
New
List
Login
commonlisp
default
shinmera
2017.02.09 13:20:35
(defun primes (n) (flet ((divisible-p (a b) (= 1 (denominator (/ a b))))) (cond ((< n 2) ()) ((= n 2) (list 2)) (T (let ((primes (primes (1- n)))) (if (find n primes :test #'divisible-p) primes (list* n primes))))))) (defun prime-factors (n) (let ((primes (primes (ceiling (sqrt n))))) (loop for prime in primes for next = (/ n prime) when (= 1 (denominator next)) collect prime when (= 1 (denominator next)) do (setf n next))))
Raw
Annotate
Repaste