Joerg Arndt on Mon, 17 Sep 2012 19:29:06 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: forprime


* Bill Allombert <Bill.Allombert@math.u-bordeaux1.fr> [Sep 17. 2012 19:21]:
> On Sun, Sep 16, 2012 at 09:12:14AM +0200, Karim Belabas wrote:
> > > On Sat, Sep 15, 2012 at 3:36 AM,  <michel.marcus@free.fr> wrote:
> > > > forprime loops over prime numbers.
> > > >
> > > > is there a  function that would loop over composite numbers ?
> > * Charles Greathouse [2012-09-15 09:41]:
> > > I typically write
> > > 
> > > p=3; forprime(q=5, lim, for(n=p+1, q-1, /* your code here */); p=q)
> > 
> > It's not easy to do this properly in GP and the result is not that readable
> > [ N.B. the above loops through composites only up to precprime(lim) ]
> > 
> > I just committed a function forcomposite() to 'master', following the (new)
> > forprime() model:
> > 
> > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> > (09:05) gp > ??forcomposite 
> > forcomposite(n = a,{b},seq):
> > 
> >    Evaluates seq, where the formal variable n ranges over the composite numbers
> > between  the  non-negative  real numbers a to b,  including a and b if they are
> > composite. Nothing is done if a > b.
> 
> What is the usecase for such function ? I never needed it myself.
> 
> At worse you can do 
> for(a=1,1000,if(!isprime(a),print(a)))
> 
> I feel concerned because I will have to write dedicated code for GP2C to handle
> it...
> 
> Cheers,
> Bill.

Agreed, and the snippet posted before can handle this nicely enough.

cheers,  jj