24 lines
810 B
Clojure
24 lines
810 B
Clojure
(ns example
|
|
(:gen-class))
|
|
|
|
(defn factors [n]
|
|
" Find the proper factors of a number "
|
|
(into (sorted-set)
|
|
(mapcat (fn [x] (if (= x 1) [x] [x (/ n x)]))
|
|
(filter #(zero? (rem n %)) (range 1 (inc (Math/sqrt n)))) )))
|
|
|
|
|
|
(def find-pairs (into #{}
|
|
(for [n (range 2 20000)
|
|
:let [f (factors n) ; Factors of n
|
|
M (apply + f) ; Sum of factors
|
|
g (factors M) ; Factors of sum
|
|
N (apply + g)] ; Sum of Factors of sum
|
|
:when (= n N) ; (sum(proDivs(N)) = M and sum(propDivs(M)) = N
|
|
:when (not= M N)] ; N not-equal M
|
|
(sorted-set n M)))) ; Found pair
|
|
|
|
;; Output Results
|
|
(doseq [q find-pairs]
|
|
(println q))
|