4clojure #66 Greatest Common Divisor

4clojure #66 Greatest Common Divisor

最大公約数を求める関数を作る。

(= (__ 2 4) 2)
(= (__ 10 5) 5)
(= (__ 5 7) 1)
(= (__ 1023 858) 33)

abの最大公約数とは、aでもbでも割り切れる数のうちの最大値だから

((fn my-gcd [a b]
    (let [m (max a b)]
        (last 
        (filter #(and (= 0 (mod a %)) (= 0 (mod b %)))
            (take m (iterate inc 1))))))
 1023 858)