(defparameter primes (make-array 80000)) (defparameter nprimes 1) (setf (aref primes 0) 2) (loop for x from 2 to 1000000 when (loop for i from 0 below (min 169 nprimes) for p = (aref primes i) never (zerop (mod x p))) do (setf (aref primes nprimes) x nprimes (1+ nprimes))) (setf primes (loop for i below nprimes collect (aref primes i))) (setf primes (reverse primes)) (defun bp(x) (loop for p in primes when (zerop (mod x p)) return p)) (defun seqM (x) (when (= x 1) (return-from seqM 1)) (let ((y (bp x))) (1+ (* y (seqM (/ x y)))))) (defparameter num (read)) (defparameter a (loop repeat num collect (read))) (format t "~d~%" (loop for x in a sum (seqM x)))