hex(n) = { local(c, s); c = round(abs(n)); s = ""; while(c != 0, s = Str(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"][c % 16 + 1] s); c = floor(c / 16); ); return(Str(if(n < 0, "-0x", "0x"), if(n == 0, 0, s))); }; ban(n) = { local(b, c, v); c = round(n); v = ""; while(c != 0, b = bitand(c, -c); v = if(b > 2, Str(2 "^" length(binary(b - 1)) v), Str(b, v)); if(bitand(c, b + b) == 0, c = c - b; v = Str(if(c != 0, " + ", ""), v), c = c + b; v = Str(if(c != 0, " - ", "- "), v) ); ); return(v); }; fan(n, lim) = { local(f, v, k); f = factor(round(n), lim); v = ""; for(k = 1, length(f~), v = Str(v, if(k > 1, " * ", "") f[k, 1] if(f[k, 2] > 1, Str("^" f[k, 2]), if(isprime(f[k, 1]), "", "c")))); return(v); }; primescan(r) = { local(s, n, nd, r2); print("- \"r\": " r); print(" \"primes\":"); s = 1; n = 2^r - 2^s + 1; while(n > 2^s, if(isprime(n), while(n % 2^(s + 1) == 1, s = s + 1); nd = lift(Mod(-1, 2^r) / n); r2 = lift(Mod(4^r, n)); print(" - \"n\": " n); print(" \"n_hex\": \"" hex(n) "\""); print(" \"n_bit\": \"" ban(n) "\""); print(" \"n_fac\": \"" fan(n - 1, 8) " + 1\""); print(" \"nd\": " nd); print(" \"nd_hex\": \"" hex(nd) "\""); print(" \"nd_bit\": \"" ban(nd) "\""); print(" \"r2\": " r2); print(" \"r2_hex\": \"" hex(r2) "\""); print(" \"r2_bit\": \"" ban(r2) "\""); if(r - s <= 2^7, print(" \"znprimroot\": " lift(znprimroot(n)))); n = n + 2^s; s = s + 1; ); n = n - 2^s; ); }; primescan_ary(a) = { local(i); for(i = 1, length(a), primescan(a[i])); }; primescan_ary([14,15,16,22,23,24,25,26,30,31,32,46,47,48,49,50,51,52,58,59,60,61,62,63,64,94,95,96,100,101,102,103,104,126,127,128]); /* allocatemem(2^25); \\ allocate memory 32MiB primescan_ary([192,256,384,512,768,1024]); */ quit;