table of contents
| Math::Prime::Util::PP(3pm) | User Contributed Perl Documentation | Math::Prime::Util::PP(3pm) |
NAME¶
Math::Prime::Util::PP - Pure Perl version of Math::Prime::Util
VERSION¶
Version 0.74
SYNOPSIS¶
The functionality is basically identical to Math::Prime::Util, as this module is just the Pure Perl implementation. This documentation will only note differences.
# Normally you would just import the functions you are using. # Nothing is exported by default. use Math::Prime::Util ':all';
DESCRIPTION¶
Pure Perl implementations of prime number utilities that are normally handled with XS or GMP. Having the Perl implementations (1) provides examples, (2) allows the functions to run even if XS isn't available, and (3) gives big number support if Math::Prime::Util::GMP isn't available.
All routines should work with native integers or multi-precision numbers. To enable big numbers, use bigint:
use bigint;
say prime_count_approx(1000000000000000000000000);
# says 18435599767347541878147
Or string inputs:
say prime_count_approx("1000000000000000000000000");
# identical output.
Some functions will be very slow. Math::Prime::Util::GMP has much faster versions of many of these functions. Alternately, Math::Pari has a lot of these types of functions.
LIMITATIONS¶
The SQUFOF and P+1 factoring algorithms are not implemented yet.
PERFORMANCE¶
Performance compared to the XS/C code is quite poor for many operations. Some operations that are relatively close for small and medium-size values:
next_prime / prev_prime is_prime / is_prob_prime is_strong_pseudoprime ExponentialIntegral / LogarithmicIntegral / RiemannR
Operations that are slower include:
primes random_prime / random_ndigit_prime factor / factor_exp / divisors nth_prime prime_count is_aks_prime
Performance improvement in this code is still possible. The prime sieve is over 2x faster than other pure Perl sieves, but it still has room for improvement.
Math::Prime::Util::GMP offers "C+XS+GMP" support for most of the important functions, and will be vastly faster for most operations. If you install that module, Math::Prime::Util will load it automatically, meaning you should not have to think about what code is actually being used (C, GMP, or Perl).
Memory use will generally be higher for the PP code, and in some cases much higher. Some of this may be addressed in a later release.
For small values (e.g. primes and prime counts under 10M) most of this will not matter.
SEE ALSO¶
Math::Prime::Util
Math::Prime::Util::GMP
AUTHORS¶
Dana Jacobsen <dana@acm.org>
COPYRIGHT¶
Copyright 2012-2026 by Dana Jacobsen <dana@acm.org>
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| 2026-03-27 | perl v5.40.1 |