'\" t .\" Title: primecount .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 04/16/2026 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" .TH "PRIMECOUNT" "1" "04/16/2026" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" primecount \- count prime numbers .SH "SYNOPSIS" .sp \fBprimecount\fR \fIx\fR [\fIoptions\fR] .SH "DESCRIPTION" .sp Count the number of primes less than or equal to x (<= 10^31) using fast implementations of the combinatorial prime counting function algorithms\&. By default primecount counts primes using Xavier Gourdon\(cqs algorithm which has a runtime complexity of O(x^(2/3) / log^2 x) operations and uses O(x^(2/3) * log^3 x) memory\&. primecount is multi\-threaded, it uses all available CPU cores by default\&. .SH "OPTIONS" .PP \fB\-d, \-\-deleglise\-rivat\fR .RS 4 Count primes using the Deleglise\-Rivat algorithm\&. .RE .PP \fB\-\-double\-check\fR .RS 4 Recompute pi(x) with alternative alpha tuning factor(s) to verify the first result\&. This redundancy helps guard against potential bugs in primecount: if an error exists, it is highly unlikely that both pi(x) computations would produce the same (incorrect) result\&. .RE .PP \fB\-g, \-\-gourdon\fR .RS 4 Count primes using Xavier Gourdon\(cqs algorithm (default algorithm)\&. .RE .PP \fB\-l, \-\-legendre\fR .RS 4 Count primes using Legendre\(cqs formula\&. .RE .PP \fB\-\-lehmer\fR .RS 4 Count primes using Lehmer\(cqs formula\&. .RE .PP \fB\-\-lmo\fR .RS 4 Count primes using the Lagarias\-Miller\-Odlyzko algorithm\&. .RE .PP \fB\-m, \-\-meissel\fR .RS 4 Count primes using Meissel\(cqs formula\&. .RE .PP \fB\-\-Li\fR .RS 4 Approximate pi(x) using the Eulerian logarithmic integral: Li(x), with Li(x) = li(x) \- li(2)\&. .RE .PP \fB\-\-Li\-inverse\fR .RS 4 Approximate the nth prime using the inverse Eulerian logarithmic integral: Li^\-1(x)\&. .RE .PP \fB\-n, \-\-nth\-prime\fR .RS 4 Calculate the nth prime\&. .RE .PP \fB\-p, \-\-primesieve\fR .RS 4 Count primes using the sieve of Eratosthenes\&. .RE .PP \fB\-\-phi\fR \fIX\fR \fIA\fR .RS 4 phi(x, a) counts the numbers <= x that are not divisible by any of the first a primes\&. .RE .PP \fB\-R, \-\-RiemannR\fR .RS 4 Approximate pi(x) using the Riemann R function: R(x)\&. .RE .PP \fB\-\-RiemannR\-inverse\fR .RS 4 Approximate the nth prime using the inverse Riemann R function: R^\-1(x)\&. .RE .PP \fB\-\-RiemannR\-psi\fR .RS 4 Approximate pi(x) using a refined Riemann R approximation based on R(psi(x))\&. Compared to \fB\-\-RiemannR\fR, this option first approximates Chebyshev\(cqs psi(x) using Riemann\(cqs explicit formula with the first 512 zeta zero gammas and then evaluates R(psi(x))\&. In practice this usually estimates pi(x) more accurately than plain R(x)\&. .RE .PP \fB\-\-RiemannR\-psi\-inverse\fR .RS 4 Approximate the nth prime using the inverse of the refined R(psi(x)) approximation\&. Compared to \fB\-\-RiemannR\-inverse\fR, this option inverts the psi\-corrected approximation instead of plain R(x)\&. In practice this usually estimates the nth prime more accurately than R^\-1(x)\&. .RE .PP \fB\-s, \-\-status\fR[=\fINUM\fR] .RS 4 Show the computation progress e\&.g\&. 1%, 2%, 3%, \&... Show \fINUM\fR digits after the decimal point: \fB\-\-status=1\fR prints 99\&.9%\&. .RE .PP \fB\-\-test\fR .RS 4 Run various correctness tests and exit\&. .RE .PP \fB\-\-time\fR .RS 4 Print the time elapsed in seconds\&. .RE .PP \fB\-t, \-\-threads\fR=\fINUM\fR .RS 4 Set the number of threads, 1 <= \fINUM\fR <= CPU cores\&. By default primecount uses all available CPU cores\&. .RE .PP \fB\-v, \-\-version\fR .RS 4 Print version and license information\&. .RE .PP \fB\-h, \-\-help\fR .RS 4 Print this help menu\&. .RE .SH "ADVANCED OPTIONS FOR THE DELEGLISE\-RIVAT ALGORITHM" .PP \fB\-\-P2\fR .RS 4 Compute the 2nd partial sieve function\&. .RE .PP \fB\-\-S1\fR .RS 4 Compute the ordinary leaves\&. .RE .PP \fB\-\-S2\-trivial\fR .RS 4 Compute the trivial special leaves\&. .RE .PP \fB\-\-S2\-easy\fR .RS 4 Compute the easy special leaves\&. .RE .PP \fB\-\-S2\-hard\fR .RS 4 Compute the hard special leaves\&. .RE .SS "Tuning factor" .sp The alpha tuning factor mainly balances the computation of the S2_easy and S2_hard formulas\&. By increasing alpha, the runtime of the S2_hard formula usually decreases, while the runtime of the S2_easy formula increases\&. By default, primecount automatically selects an alpha tuning factor that is likely to provide the best performance for the user\(cqs input\&. .sp The alpha tuning factor is also very useful for double checking pi(x) computations\&. You compute pi(x) twice but for the second computation you use a slightly different alpha factor\&. If the results of both pi(x) computations match then pi(x) has been verified successfully\&. .PP \fB\-a, \-\-alpha\fR=\fINUM\fR .RS 4 Set the alpha tuning factor: y = x^(1/3) * alpha, 1 <= alpha <= x^(1/6)\&. .RE .SH "ADVANCED OPTIONS FOR XAVIER GOURDON\(cqS ALGORITHM" .PP \fB\-\-AC\fR .RS 4 Compute the A + C formulas\&. .RE .PP \fB\-\-B\fR .RS 4 Compute the B formula\&. .RE .PP \fB\-\-D\fR .RS 4 Compute the D formula\&. .RE .PP \fB\-\-Phi0\fR .RS 4 Compute the Phi0 formula\&. .RE .PP \fB\-\-Sigma\fR .RS 4 Compute the 7 Sigma formulas\&. .RE .SS "Tuning factors" .sp The alpha_y and alpha_z tuning factors mainly balance the computation of the A, B, C and D formulas\&. When alpha_y is decreased and alpha_z is increased, the runtime of the B formula increases, while the runtime of the A, C and D formulas decrease\&. By default, primecount automatically selects alpha_y and alpha_z tuning factors that are likely to provide the best performance for the user\(cqs input\&. .sp Both the alpha_y and alpha_z tuning factors are also very useful for double checking pi(x) computations\&. You compute pi(x) twice but for the second computation you use slightly different alpha_y and/or alpha_z tuning factors\&. If the results of both pi(x) computations match then pi(x) has been verified successfully\&. .PP \fB\-\-alpha\-y\fR=\fINUM\fR .RS 4 Set the alpha_y tuning factor: y = x^(1/3) * alpha_y, 1 <= alpha_y <= x^(1/6)\&. .RE .PP \fB\-\-alpha\-z\fR=\fINUM\fR .RS 4 Set the alpha_z tuning factor: z = y * alpha_z, 1 <= alpha_z <= x^(1/6)\&. .RE .SH "DOUBLE CHECKING PI(X) COMPUTATIONS" .sp For large pi(x) computations that run over several weeks or months, it is important to verify such computations to protect against miscalculations due to hardware errors and/or bugs in primecount\&. .sp To verify a pi(x) computation, you compute pi(x) twice\&. But for the second run you use the \fB\-\-double\-check\fR option\&. The \fB\-\-double\-check\fR option enables the use of alternative alpha tuning factor(s), ensuring that all internal bounds in the second computation differ slightly from the first run\&. This redundancy helps guard against potential bugs in primecount: if an error exists, it is highly unlikely that both pi(x) computations would produce the same (incorrect) result\&. .PP \fBprimecount 1e20 \-\-status\fR .RS 4 First pi(x) computation using default alpha tuning factor(s)\&. .RE .PP \fBprimecount 1e20 \-\-status \-\-double\-check\fR .RS 4 Second pi(x) computation using alternative alpha tuning factor(s)\&. .RE .SH "EXAMPLES" .PP \fBprimecount 1000\fR .RS 4 Count the primes <= 1000\&. .RE .PP \fBprimecount 1e17 \-\-status\fR .RS 4 Count the primes <= 10^17 and print status information\&. .RE .PP \fBprimecount 1e15 \-\-threads 1 \-\-time\fR .RS 4 Count the primes <= 10^15 using a single thread and print the time elapsed\&. .RE .SH "HOMEPAGE" .sp https://github\&.com/kimwalisch/primecount .SH "AUTHOR" .sp Kim Walisch