Napisałem poniższy kod do obliczania największego wspólnego dzielnika dwóch liczb dodatnich. Czy w kodzie są jakieś kwestie, które nie są optymalne lub wystarczająco kurejskie, a jeśli tak, to jaki byłby bardziej klasyczny sposób robienia GCD?Największy wspólny dzielnik w Clojure
(def gcd (fn [a b] (->> (map (fn [x]
(filter #(zero? (mod x %)) (range 1 (inc x))))
[a b])
(map set)
(apply clojure.set/intersection)
(apply max))))
(gcd 1023 858)` => 33
dziękuję. Skoro jestem nowicjuszem, czy mógłbyś wyjaśnić, jaka jest manipulacja sekwencyjna dla operacji numerycznych w moim kodzie? Byłbym wdzięczny, gdybyś mógł przedstawić mi źródło wiedzy na temat przetworników. – amirteymuri
A czy algorytm zastosowałeś algorytm Euklidesa? – amirteymuri
Będę edytować z więcej o sekwencjach i tak, to euclids –