anchor.diff:                     (collect i)
                      (collect (/ n i))))
           #'<))
  +
  +(defun proper-divisors (n)
  +  (remove n (divisors n)))
   
   (defun count-divisors (n)
     (* 2 (iterate (for i :from 1 :to (sqrt n))
  
positive.code: (test p18 (is (= 1074 (problem-18))))
  (test p19 (is (= 171 (problem-19))))
  (test p20 (is (= 648 (problem-20))))
  
  
  ;; (run! :euler)
  
negative.code:   ;; Find the sum of the digits in the number 100!
    (sum (digits (factorial 100))))
  
  (defun problem-21 ()
    ;; Let d(n) be defined as the sum of proper divisors of n (numbers less than
    ;; n which divide evenly into n).
    ;;
    ;; If d(a) = b and d(b) = a, where a ≠ b, then a and b are an amicable pair
    ;; and each of a and b are called amicable numbers.
    ;;
    ;; For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44,
    ;; 55 and 110; therefore d(220) = 284. The proper divisors of 284 are 1, 2, 4,
    ;; 71 and 142; so d(284) = 220.
    ;;
    ;; Evaluate the sum of all the amicable numbers under 10000.
    (labels ((sum-of-divisors (n)
               (sum (proper-divisors n)))
             (amicablep (n)
               (let ((other (sum-of-divisors n)))
                 (and (not= n other)
                      (= n (sum-of-divisors other))))))
      (sum (remove-if-not #'amicablep (range 1 10000)))))
  
  
  ;;;; Tests --------------------------------------------------------------------
  (def-suite :euler)
  