22 lines
907 B
Clojure
22 lines
907 B
Clojure
(require '[clojure.string :refer [join]])
|
||
(require '[clojure.pprint :refer [cl-format]])
|
||
|
||
(defn divisors [n] (filter #(zero? (rem n %)) (range 1 (inc n))))
|
||
|
||
(defn display-results [label per-line width nums]
|
||
(doall (map println (cons (str "\n" label ":") (list
|
||
(join "\n" (map #(join " " %)
|
||
(partition-all per-line (map #(cl-format nil "~v:d" width %) nums)))))))))
|
||
|
||
(display-results "Tau function - first 100" 20 3
|
||
(take 100 (map (comp count divisors) (drop 1 (range)))))
|
||
|
||
(display-results "Tau numbers – first 100" 10 5
|
||
(take 100 (filter #(zero? (rem % (count (divisors %)))) (drop 1 (range)))))
|
||
|
||
(display-results "Divisor sums – first 100" 20 4
|
||
(take 100 (map #(reduce + (divisors %)) (drop 1 (range)))))
|
||
|
||
(display-results "Divisor products – first 100" 5 16
|
||
(take 100 (map #(reduce * (divisors %)) (drop 1 (range)))))
|