Somewhere in the bowels of q: it calls 1&p: before launching into the much more expensive factoring routine.
It seems to me there should be a straightforward determination of whether a number y is a perfect power: just try all possible exponents from 2 to 2 >....@^. y . For example, for 2^607x the exponents are from 2 to 607, which is not many exponents to try. Thus: pp=: 3 : 0 for_e. 2+i.>.2^.y do. m=. e <....@%: y if. y=m^x: e do. m,e return. end. end. '' ) pp 81 9 2 pp 128 2 7 pp 125 5 3 pp 2^100x 1125899906842624 2 pp <:2^607x 6!:2 'pp <: 2^607x' 0.159832 pptest=: *...@#@pp ----- Original Message ----- From: Raul Miller <[email protected]> Date: Monday, June 8, 2009 15:32 Subject: Re: [Jprogramming] perfect power??? To: Programming forum <[email protected]> > On Mon, Jun 8, 2009 at 6:13 PM, > <[email protected]> wrote: > > From what I am read in this article, determing if a number > > is a "Perfect Power" should be > > a lot faster. Either that or I am totally mis-reading the > > article. > > Determining if a number is a perfect power is certainly > faster than some algorithm for determining if a number > is prime. > > But do you have any reason to believe J uses that > algorithm, in its implementation of q? > > That said, 1 p: will determine whether or not a number > is prime, and might be faster than 1 = # q: in some > cases. ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
