MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: All Factors of a number

  • To: mathgroup at smc.vnet.net
  • Subject: [mg53043] Re: [mg53025] All Factors of a number
  • From: DrBob <drbob at bigfoot.com>
  • Date: Tue, 21 Dec 2004 05:19:21 -0500 (EST)
  • References: <200412201134.GAA02639@smc.vnet.net>
  • Reply-to: drbob at bigfoot.com
  • Sender: owner-wri-mathgroup at wolfram.com

FactorInteger does this already.

Just for grins, here's code to list factorizations of Mersenne numbers in Xmas tree format.

toPowers = {{a_Integer, 1} -> HoldForm[a], {a_Integer, b_Integer} -> HoldForm[a]^HoldForm[b],
     List -> Times};
toStars = StringReplace[ToString[#1 /. toPowers], " " -> " * "] & ;
n = 1;
{totalTime, results} =
    Timing[First[Last[Reap[While[n <= 54, p = Prime[n];
           Sow[Timing[{n, p, FactorInteger[2^p - 1]}]]; n++]]]]] /.
     {(s_)*Second, {n_, p_, f_}} :> {n, p, s, toStars[f]};
TableForm[results, TableAlignments -> {Center, Center, Right},
   TableHeadings -> {None, {"n", "p = Prime[n]"*1, Seconds, "Factors of 2^p-1"}}]
Print["Total Time: ", totalTime]

That took 499 seconds on my AMD 3200+ machine, so reduce 54 to a smaller number if you're using a slower machine or don't have the patience. Of those 499 seconds, 125 were used for the 54th Mersenne, 201 for the 47th Mersenne, and 63 for the 50th. The rest go pretty fast, so reducing 54 to 46 will work well.

Bobby

On Mon, 20 Dec 2004 06:34:49 -0500 (EST), Ulrich Sondermann <usondermann at earthlink.net> wrote:

> Following is a test code that I am trying to get down to a set of
> instructions that will allways put all of the factors of a number in a table
> or list.
> bt contains all of the factors if I multiply each list entry, however I
> cannot accomplish that with a single line, as an example I have broken into
> the three lists needed for this example. The results of each "Times@@" is
> what I am after all placed into one table. All of my attempts have proved
> disasterous, I am new to Mathematica and could do this with nested loops in
> any programming language, but this has me stumped.
> Thanx!
>
> <<DiscreteMath`Combinatorica`
> bt=Table[KSubsets[{1,2,3,5},a],{a,3}]
> {{{1},{2},{3},{5}},{{1,2},{1,3},{1,5},{2,3},{2,5},{3,5}},{{1,2,3},{1,2,5},{1
> ,3,5},{2,3,5}}}
> bt1=bt[[1,All]]
> {{1},{2},{3},{5}}
>  Table[Times@@bt1[[a]],{a,4}]
> {1,2,3,5}
> bt2=bt[[2,All]]
> {{1,2},{1,3},{1,5},{2,3},{2,5},{3,5}}
> Table[Times@@bt2[[a]],{a,6}]
> {2,3,5,6,10,15}
> bt3=bt[[3,All]]
> {{1,2,3},{1,2,5},{1,3,5},{2,3,5}}
> Table[Times@@bt3[[a]],{a,4}]
> {6,10,15,30}
>
>
>
>



-- 
DrBob at bigfoot.com
www.eclecticdreams.net


  • Prev by Date: Re: Re: Mathematica language issues
  • Next by Date: Re: infinite sum problem
  • Previous by thread: All Factors of a number
  • Next by thread: Re: All Factors of a number