第五問
最小公倍数を求めるだけ。
以下ネタバレ
(defn make-multiple [a b]
(let [c (/ a b)]
(if (integer? c)
a
(int (* a (denominator c))))))
(defn min-multiple [n]
(reduce make-multiple 1 (range 1 (inc n))))
Clojureは割り算で余りが出る場合自動でrationalクラスに変換するので非常に楽。
reduce
には第二引数をオプションで初期値にできる。今回実は初期値はいらないがあったほうが自然だと思う。