(defun square? (num) (if (integerp (sqrt num)) T)) (defun factors (num) (let ((l '())) (do ((current 1 (1+ current))) ((> current (/ num current))) (if (= 0 (mod num current)) (if (= current (/ num current)) (setf l (append l (list current))) (setf l (append l (list current (/ num current))))))) (sort l #'< ))) (defun o_2 (n) (reduce #'+ (mapcar (lambda (x) (* x x)) (factors n)))) (defun sum-divisor-squares (limit) (loop for i from 1 to limit when (square? (o_2 i)) summing i)) (defun euler-211 () (sum-divisor-squares 64000000))