hermann on Sat, 04 May 2024 00:19:15 +0200


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

Re: Simpler PARI/GP code than this?


On 2024-05-03 18:19, Bill Allombert wrote:
...
Also, if you just the latest GIT master branch, you can use a map for o:

maplistput(~M,k,v) = mapapply(~M,k,(~y)->listput(~y,v),()->List(v));
z(p) = znorder(Mod(2,p));
o = Map(); forprime(p=3,2^16+1,maplistput(~o,z(p),p));
foreach(Vec(o),i, print("-", i, ", ", strjoin(Vec(mapget(o,i)), ", "), ","));

Cheers,
Bill.

Thanks, good to know about map functions.

I thought about the problem again (I am a big fan t_VEC constructors with "<-", 2-tuples and vecsort).

There are 6542 primes <2^16:

? primes(9999)[6542..6543]
[65521, 65537]
?

L is of type t_POL which is != compared to any t_INT.

Whitespace is not important, so this one-liner creates the same sequence of numbers(!):

$ cat gen2.gp
foreach(vecsort([[znorder(Mod(2,p)),p]|p<-primes(6542)[2..6542]]),t,[o,p]=t;if(L!=o,L=o;print1(-o,","));print1(p,","))
$
$ gp -q < gen2.gp | head --bytes 65; echo
-2,3,-3,7,-4,5,-5,31,-7,127,-8,17,-9,73,-10,11,-11,23,89,-12,13,-
$ gp -q < gen2.gp | tail --bytes 65
65292,65293,-65308,65309,-65322,65323,-65356,65357,-65370,65371,
$


Regards,

Hermann.