Not sure it's better than Uncle Bobs version but it seems a little
more idiomatic?

(defn of [n]
  (letfn [(f [res k]
             (if (= 0 (rem (:n res) k))
               (assoc (assoc res :n (quot (:n res) k)) :fs (conj (:fs
res) k))
               res))]
        (:fs (reduce f  {:n n :fs []} (range 2 n)))))

Uncle Bob version below (http://blog.objectmentor.com/articles/
2010/05/15/clojure-prime-factors)

(defn of
  ([n]
    (of [] n 2))
  ([factors n candidate]
    (cond
      (= n 1) factors
      (= 0 (rem n candidate)) (recur (conj factors candidate) (quot n
candidate) candidate)
      (> candidate (Math/sqrt n)) (conj factors n)
      :else (recur factors n (inc candidate))
      )
    )
  )

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to