[seqfan] RE: list of factors [was: Maple question]

Chuck Seggelin seqfan at plastereddragon.com
Sun May 2 17:27:04 CEST 2004


Granted I use an old copy of Maple (version 6), but here's a simple method:

ifactor2 := proc(v)
   local a,b,c,f,e,factorlist;
   a:=ifactors(v);

   factorlist:=[];
   for b in a[2] do;
       f:=b[1];
       e:=b[2];
       for c to e do;
           factorlist:=[op(factorlist),f];
       od;
   od;

   factorlist;
 end proc;

This method will work as long as you don't pass a value to ifactor2 which
requires negative exponents.

                        -- Chuck


----- Original Message -----
From: "cino hilliard" <hillcino368 at hotmail.com>
To: <seqfan at ext.jussieu.fr>
Sent: Sunday, May 02, 2004 2:01 AM
Subject: [seqfan] RE: list of factors [was: Maple question]


> Hi,
>
> >From: "Eric W. Weisstein" <eww at wolfram.com>
> >To: Emeric Deutsch <deutsch at duke.poly.edu>,        "N. J. A. Sloane"
> ><njas at research.att.com>
> >CC: seqfan at ext.jussieu.fr
> >Subject: RE: list of factors [was: Maple question]
> >Date: Sat, 1 May 2004 09:01:57 -0500 (CDT)
> >
> >On Sat, 1 May 2004, Emeric Deutsch wrote:
> >
> > > Dear Seqfans,
> > > I wonder whether this is an appropriate topic.
> > > Let me formulate my simple question on an example.
> > > The command ifactor(72) yields 2^3 3^2.
> > > I would like to get [2,2,2,3,3].
> > > Any idea? Thanks.
> > > Emeric
> >
> >On Sat, 1 May 2004, N. J. A. Sloane wrote:
> >
> > > > ifactors(72);
> > >                                             [1, [[2, 3], [3, 2]]]
> > >
> > > is as close as you can get - but that's pretty close!
> > >
> > > Emeric asked:
> > > The command ifactor(72) yields 2^3 3^2.
> > > I would like to get [2,2,2,3,3].
> >
> >In Mathematica:
> >
> >Flatten[Table[#1,{#2}]& @@@ FactorInteger[72]]
> >   or
> >Flatten[Table[#[[1]], {#[[2]]}]& /@ FactorInteger[72]]
> >   or
> >Flatten[Table[First[#],{Last[#]}]& /@ FactorInteger[72]]
> >
> >{2,2,2,3,3}
> >
> >Cheers,
> >-Eric
> >
>
> In Pari:
>
> ifactor(n) =
>            {
>             local(f,j,k,fstr);
>             fstr="";
>             f=Vec(factor(n));
>             for(j=1,length(f[1]),
>                for(k = 1,f[2][j],fstr =
> concat(concat(fstr,Str(f[1][j])),",");
>                 );
>                );
>             fstr = mid(fstr,1,length(fstr)-1);
>             print("["fstr"]")
>            }
>
> \\ Get a substring of length n from string str starting at position s in
> str.
> mid(str,s,n) =
>                 {
>                 local(v,ln,x,tmp);
>                 v ="";
>                 tmp = Vec(str);
>                 ln=length(tmp);
>                 for(x=s,s+n-1,
>                 v=concat(v,tmp[x]);
>                 );
>                 return(v)
>                 }
>
> Having learned from Pari here is a maple rendition  Maple:
>
> ifactor2 := proc(n)
> local f,A,j,k,ln,x,fstr,nstr;
> f:=ifactors(n);
> fstr:="";
> x:=f[2];
> A:=Array(x);
> ln := ArrayNumElems(A)/2;
>    for j from 1 to ln do
>      for j from 1 to f[2,j][2] do
>        fstr := cat(fstr,convert(f[2,j][1],string),",");
>      end do;
>    end do;
> nstr:=cat("[",substring(fstr,1..length(fstr)-1),"]");
> printf(nstr);
> end proc;
>
> Cino
>
> _________________________________________________________________
> Check out the coupons and bargains on MSN Offers!
http://youroffers.msn.com
>
>






More information about the SeqFan mailing list