hermann on Mon, 07 Jul 2025 00:40:02 +0200


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

Implementation of functions for "Integer partitions detect the primes" paper


In forum posting
https://www.mersenneforum.org/node/1081249

somebody asked for a PARI/GP implementation of partition functions from

"Integer partitions detect the primes"
William Craig, Jan-Willem van Ittersum, and Ken Ono

Nice to see how forpart() can be used for non-simple stuff.
I implemented functions M1(n), M2(n) and T1(n) for Theorem 1:
https://www.pnas.org/doi/epub/10.1073/pnas.2409417121
T1(n) is >=0 and =0 for n prime.

pi@raspberrypi5:~ $ freq
min=cur=3000000=max
pi@raspberrypi5:~ $ gp -q
? M1(n)=s=0;fordiv(n,d,s+=d);s;
? M2(n)=s=0;for(m=1,n,forpart(v=m,if(v[1]<v[2],for(d=1,n\v[1],r=n-d*v[1];if(r%v[2]==0,s+=d*(r\v[2])))),[1,m],[2,2]));s;
? T1(n)=(n^2-3*n+2)*M1(n)-8*M2(n);
?
? T1(7)
0
? T1(8)
270
? T1(9)
192
? T1(10)
504
? T1(11)
0
?

Makes no fun for bigger an as runtime goes up quickly
(on Raspberry Pi5 overclocked with 3GHz):

? #
   timer = 1 (on)
? T1(100)
cpu time = 20 ms, real time = 20 ms.
998694
? T1(1000)
cpu time = 3,007 ms, real time = 3,009 ms.
1185869880
? T1(2000)
cpu time = 13,477 ms, real time = 13,484 ms.
10118024280
? nextprime(2000)
2003
? T1(2003)
cpu time = 13,448 ms, real time = 13,454 ms.
0
?

Regards,

Hermann.