(intersection s1) (intersection s1 s2) (intersection s1 s2 & sets)
Return a set that is the intersection of the input sets
user=> (clojure.set/intersection #{1})
#{1}
user=> (clojure.set/intersection #{1 2} #{2 3})
#{2}
user=> (clojure.set/intersection #{1 2} #{2 3} #{3 4})
#{}
user=> (clojure.set/intersection #{1 :a} #{:a 3} #{:a})
#{:a}
; gcd => Greatest common divisor
(defn find-divisors [x]
(let [divisors (atom [x])]
(doseq [_x (range 1 x)] (if (== 0 (mod x _x))
(swap! divisors conj _x)
))
@divisors
)
)
(defn gcd [x y] (let
[x-div (set (find-divisors x))
y-div (set (find-divisors y))]
(last (into [] (clojure.set/intersection y-div x-div)))
))
;; lcm least common multiply
(defn lcm [x y] (/ (Math/abs (* x y)) (gcd x y)))
=> #'user/find-divisors
=> #'user/gcd
=> #'user/lcm
(lcm 4 6)
=> 12
(clojure.set/intersection #{:a :b :c} #{:d :c :b})
;=> #{:b :c}
(clojure.set/intersection #{:a :e :i :o :u}
\t\t\t #{:a :u :r}
\t\t\t #{:r :u :s})
;=> #{:u}