hermann on Sat, 22 Jul 2023 02:15:01 +0200


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

Is list correct datatype for dynamically building results?


Or better t_VEC?

I learned from Bill on nice infinite forprime() loops.
And exiting based on kronecker().

Until now I used "smallest_qnr(n)" function to return smallest quadratic non-residue (mod n).

I extended definition to return c smallest quadratic non-residues:

? smallest_qnr(m,s=2,c=1) = {
    l=List();
    for(c=-c,-1,
     forprime(t=s, oo,
        if(kronecker(t, m)==-1,
          listput(l,t);
          s=t+1;
          break()
        )
      )
    );
    l
  };
?

Smallest 5 qnrs starting with 2:

? smallest_qnr(85,,5)
%128 = List([2, 11, 13, 29, 31])
?

Smallest 5 qnrs starting with 32:

? smallest_qnr(85,32,5)
%129 = List([41, 43, 47, 53, 61])
?


Above function is fast for really huge numbers, eg. 1million-digit prime.

So it allows to return smallest qnrs for all RSA-numbers, not only the already factored ones:

https://github.com/Hermann-SW/RSA_numbers_factored/blob/main/pari/RSA_numbers_factored.gp

? \r RSA_numbers_factored
validate(rsa): ✓
? for(i=1,#rsa,[l,n]=rsa[i][1..2];print("RSA-",l,": ", smallest_qnr(n,2,5)))
RSA-59: List([2, 3, 11, 13, 17])
RSA-79: List([3, 7, 11, 23, 29])
RSA-100: List([2, 3, 17, 19, 23])
RSA-110: List([2, 3, 5, 11, 23])
RSA-120: List([3, 7, 11, 13, 17])
RSA-129: List([2, 3, 7, 11, 13])
RSA-130: List([2, 5, 7, 17, 31])
RSA-140: List([3, 13, 17, 23, 37])
RSA-150: List([2, 3, 5, 11, 19])
RSA-155: List([5, 19, 29, 37, 41])
RSA-160: List([5, 7, 11, 17, 19])
RSA-170: List([3, 11, 17, 29, 37])
RSA-576: List([2, 11, 13, 37, 41])
RSA-180: List([11, 13, 17, 23, 31])
RSA-190: List([7, 11, 31, 37, 43])
RSA-640: List([3, 7, 11, 13, 17])
RSA-200: List([3, 5, 7, 11, 17])
RSA-210: List([2, 3, 5, 7, 19])
RSA-704: List([3, 7, 11, 13, 17])
RSA-220: List([2, 13, 19, 29, 31])
RSA-230: List([7, 11, 13, 19, 53])
RSA-232: List([3, 11, 19, 29, 31])
RSA-768: List([2, 5, 7, 11, 13])
RSA-240: List([2, 3, 13, 19, 37])
RSA-250: List([5, 7, 13, 31, 37])
RSA-260: List([3, 13, 17, 19, 41])
RSA-270: List([3, 5, 11, 17, 23])
RSA-896: List([3, 7, 11, 23, 29])
RSA-280: List([2, 11, 13, 19, 23])
RSA-290: List([3, 11, 17, 19, 23])
RSA-300: List([3, 5, 11, 13, 23])
RSA-309: List([2, 7, 11, 19, 23])
RSA-1024: List([2, 3, 5, 13, 17])
RSA-310: List([7, 17, 19, 29, 31])
RSA-320: List([2, 5, 7, 11, 17])
RSA-330: List([2, 3, 5, 7, 13])
RSA-340: List([5, 17, 19, 29, 41])
RSA-350: List([3, 7, 11, 13, 17])
RSA-360: List([11, 23, 37, 47, 53])
RSA-370: List([2, 11, 17, 29, 31])
RSA-380: List([3, 7, 13, 23, 41])
RSA-390: List([7, 17, 19, 47, 59])
RSA-400: List([5, 7, 11, 13, 19])
RSA-410: List([3, 7, 11, 19, 23])
RSA-420: List([2, 3, 7, 13, 17])
RSA-430: List([2, 7, 29, 31, 37])
RSA-440: List([2, 3, 7, 11, 19])
RSA-450: List([5, 7, 11, 17, 23])
RSA-460: List([2, 11, 13, 19, 23])
RSA-1536: List([2, 3, 7, 19, 23])
RSA-470: List([7, 11, 17, 23, 37])
RSA-480: List([3, 5, 7, 17, 19])
RSA-490: List([2, 3, 17, 19, 23])
RSA-500: List([7, 17, 23, 37, 41])
RSA-617: List([2, 5, 17, 19, 37])
RSA-2048: List([2, 3, 5, 7, 11])
?


Regards,

Hermann.


P.S:
Just started computation of "sqrt(-1) (mod p)" for 9,383,761-digit prime. Not with Pari, but with libgmpxx mpz_powm() because it is a bit faster. Basically it computes Mod(3,p)^(2^31172165)^10223 -- runtime forcast of minimal 75.4 days(!) on fast AMD 7600X CPU:
https://github.com/Hermann-SW/9383761-digit-prime/tree/main#readme

pi@pi400-64:~ $ ssh hermann@7600x uptime
 02:05:44 up 1 day,  8:32,  0 users,  load average: 1.00, 1.00, 1.00
pi@pi400-64:~ $