hermann on Sat, 15 Nov 2025 11:18:05 +0100


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

Re: gaussian integer modulus / Pollard's rho method on gaussian integers


On 2025-11-14 22:33, Bill Allombert wrote:
...
Now I tried to use GP t_COMPLEX instead of a vector of two numbers for
gaussian integers. And the code tells so much more how and what is done:

Exercise: write a GP script that write a number as the sum of three
triangular numbers.

Cheers,
Bill

I learned about Gauss's Eureka theorem ...
https://warwick.ac.uk/fac/sci/maths/people/staff/michaud/thirdyearessay.pdf#page=27

... when implementing tqf.gp for determining sum of 3 squares with help from this list two years ago:
https://pari.math.u-bordeaux.fr/archives/pari-users-2311/msg00007.html

Working tqf.gp gist is here:
https://gist.github.com/Hermann-SW/f13b8adf7d7e3094f0b6db0bce29a7b8

Solution to exercise:

$ N=42 gp -q <eureka.gp 2>/dev/null
Δ(2)+Δ(8)+Δ(2)
=3+36+3
=42
$ N=1234567891 gp -q <eureka.gp 2>/dev/null
Δ(39136)+Δ(879)+Δ(30605)
=765832816+386760+468348315
=1234567891
$

$ cat eureka.gp
read("tqf.gp");

delta(n)=n*(n+1)/2;

assert(getenv("N")!=0);
n=eval(getenv("N"));

sq3=squares34(8*n+3)\2;
print("Δ(",sq3[1],")+Δ(",sq3[2],")+Δ(",sq3[3],")");
print("=",delta(sq3[1]),"+",delta(sq3[2]),"+",delta(sq3[3]));
print("=",delta(sq3[1])+delta(sq3[2])+delta(sq3[3]));
$

Regards,

Hermann