listing factors of a number

188 views
Skip to first unread message

Glen Rubin

unread,
Mar 23, 2010, 4:02:15 PM3/23/10
to Clojure
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?

kotor

unread,
Mar 23, 2010, 4:35:12 PM3/23/10
to Clojure
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))))))

Per Vognsen

unread,
Mar 23, 2010, 9:38:52 PM3/23/10
to clo...@googlegroups.com
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

> --
> 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.
>

Glen Rubin

unread,
Mar 24, 2010, 9:13:39 AM3/24/10
to Clojure
it looks like that code will suffice. Thanks!!

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

Mark Engelberg

unread,
Mar 24, 2010, 12:55:21 PM3/24/10
to clojure
Check out clojuratica.  It interfaces Clojure to a free version of mathematica which has a very fast implementation called FactorInteger.

--Mark

Glen Rubin

unread,
Mar 24, 2010, 6:57:30 PM3/24/10
to Clojure
Except Mathematica is kind of expensive $250 for the home edition. It
looks like there is also Incanter which is a similar project using R
free statistical computing environment

Mark Engelberg

unread,
Mar 24, 2010, 7:59:14 PM3/24/10
to clojure
Like I said, Clojuratica works with the free edition of Mathematica:
http://www.wolfram.com/products/player/

I found it tricky to get it all set up the first time, but it is definitely nice to have access to some of those really fast Mathematica functions.

--
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
Reply all
Reply to author
Forward
0 new messages