Charles Greathouse on Tue, 18 Sep 2012 00:20:23 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: forprime |
Yes, the snippet I posted did not include the tail processing, which would be for(n=precprime(lim)+1,lim, /* code here */) > How much dedicated code ? I intended to add a few more loop constructs to GP: > > - forstepprime() [ loop over primes in an arithmetic progression ] > - forprimepowers() [ loop over prime powers ] I agree that loop constructs are useful. I would use both of these. I would use forcomposite as well, though it's less important since it's easier to simulate. Charles Greathouse Analyst/Programmer Case Western Reserve University On Mon, Sep 17, 2012 at 4:21 PM, Karim Belabas <Karim.Belabas@math.u-bordeaux1.fr> wrote: > * Bill Allombert [2012-09-17 18:50]: >> 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: > [...] >> 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))) > > Rather slower than the original code snippet, but more correct. > > (20:07) gp > lim=10^8; > (20:07) gp > s=0;forcomposite(q=3,lim,s++); s > time = 12,846 ms. > %2 = 94238544 > > (20:07) gp > s=0; p=3; forprime(q=5, lim, for(n=p+1, q-1, s++); p=q) > time = 13,801 ms. \\ result not printed we know it's a little wrong > > (20:07) gp > s=0;for(q=3,lim,if (!isprime(q),s++)); s > time = 54,684 ms. > %1 = 94238544 > >> I feel concerned because I will have to write dedicated code for GP2C to >> handle it... > > How much dedicated code ? I intended to add a few more loop constructs to GP: > > - forstepprime() [ loop over primes in an arithmetic progression ] > - forprimepowers() [ loop over prime powers ] > > How costly would these be ? (The first one is already in master, only not > exported to GP yet.) > > Those are (much) more useful than forcomposite(), although I thought it didn't > hurt to have the latter. Since it's non-trivial to write properly... > > Cheers, > > K.B. > -- > Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17 > Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50 > 351, cours de la Liberation http://www.math.u-bordeaux1.fr/~belabas/ > F-33405 Talence (France) http://pari.math.u-bordeaux1.fr/ [PARI/GP] > ` >