Re: isprime() runtime jump between 10^18 and 10^20?

Aurel Page <[email protected]> Tue, 6 Jan 2026 11:59:46 +0100
Newsgroups gmane.comp.mathematics.pari.user
Message-ID <[email protected]>
Dear Hermann,

There are two prime testing functions in pari:
- ispseudoprime: a fast pseudo-primality test, which in particular 
guarantees primality of numbers up to 2^64.
- isprime: a certified primality test, which only runs ispseudoprime for 
numbers up to 2^64, but performs a much more costly test otherwise.
In addition, as you know you should expect operations on integers that 
do not fit in a long to be much slower, as we immediately switch to 
multiprecision integers (t_INT).
I did a quick test on my laptop (don't consider these numbers as universal):
- ispseudoprime was about 17 times slower for numbers between 2^63 and 
2^64 than for numbers between 2^64 and 2^65 (long -> t_INT).
- isprime was about 12 times slower than ispseudoprime for numbers 
between 2^64 and 2^65.
Together, these make a jump of x200 for isprime from [2^63,2^64] to 
[2^64,2^65].

Note that 2^64 ~ 10^19, corresponding to your observed jump.

For specific applications, of course a dedicated sieve will be faster 
than individual primality tests.

Cheers,
Aurel

On 06/01/2026 09:30, [email protected] wrote:
> I recently submitted https://oeis.org/draft/A392244 on "Number of 
> primes of the form b^2 + (b+1)^2 for b <= 10^n.".
>
> PROG section has this straightforward PARI script:
>
> a(n)=sum(k=1, 10^n, isprime(k^2+(k+1)^2));
>
> It is quite fast for up to n=9 (5 minutes on AMD 7950X CPU). And it 
> computed a(10) as well, but did need 23h for that:
>
> ? a(10)
>
> cpu time = 33h, 53min, 56,970 ms, real time = 23h, 3min, 55,987 ms.
> 614983774
> ?
>
> So is there an isprime() runtime jump between 10^18 and 10^20?
>
>
> There is a conjecture that pi_{k^2+1)(10^n) is a minorant of pi(10^n) 
> = pi_{k}(10^n), with limit factor of 0.686413 (https://oeis.org/A206709).
>
> New sequence conjecture is lim_{k->oo} pi_{k^2+(k+1)^2}/pi_{k^2+1} = 
> 2, so p_{k^2+(k+1)^2} is majorant of prime counting funtions pi(). 
> There are much more primes for k<=10^n in k^2+(k+1)^2 than in natural 
> numbers up to 10^k, which is confirmed by counts up to 10^11.
>
>
> I did create a non-PARI C++ code that traverses a related great 
> grandparent DAG for a "sieve of Eratosthenes like" sieving, which is 
> described here:
>
> https://gist.github.com/Hermann-SW/4b197c6e8bf9f65c7a074ad6271ddce4#file-parallel_dfs_bfs_evenly-cc-L26-L53 
>
>
> Sequential code did compute a(10) in 22min and first parallel version 
> a(11) in 14:28h (on 192C/384T 8-socket server). The directed acyclic 
> graph traversed contains all sum of successive squares composite 
> numbers, allowing to sieve without prime test. Servers's 1TB ram 
> allowed to have 100GB array for sieve. The height of that directed 
> acyclic graph is 40% of 10^n, with is 40 billion(!) for n=11. I never 
> had to traverse such a deep directed acyclic graph ...
>
>
> Regards,
>
> Hermann.