(defn factors [x]
"integer -> vector[integers]"
(loop [xf [] i 2]
(if (> (* i i) x)
(vec (sort (distinct xf)))
(if (zero? (rem x i))
(recur (conj xf i (/ x i)) (inc i))
(recur xf (inc i))))))
-Per
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@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+u...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>
> To unsubscribe from this group, send email to clojure+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
>
On Mar 23, 9:38 pm, Per Vognsen <per.vogn...@gmail.com> wrote:
> I'm sure that code would be useful if he were looking for a slow
> implementation of a slow algorithm. I believe he asked for an
> optimized algorithm. An example might be Lenstra's elliptic curve
> factorization or the general number field sieve. I don't know of any
> implementations in Clojure but there seem to be a few floating around
> in Java.
>
> -Per
>
> On Wed, Mar 24, 2010 at 3:35 AM, kotor <cnbe...@netscape.net> wrote:
> > On Mar 23, 1:02 pm, Glen Rubin <rubing...@gmail.com> wrote:
> >> Does anyone know of any existing libraries for clojure that has code
> >> which is optimized to list all of the factors of any given integer?
>
> > (defn factors [x]
> > "integer -> vector[integers]"
> > (loop [xf [] i 2]
> > (if (> (* i i) x)
> > (vec (sort (distinct xf)))
> > (if (zero? (rem x i))
> > (recur (conj xf i (/ x i)) (inc i))
> > (recur xf (inc i))))))
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Clojure" group.> To post to this group, send email tocl...@googlegroups.com
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com