'\" t
.\" Title: primecount
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 02/17/2024
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "PRIMECOUNT" "1" "02/17/2024" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * 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\-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\-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 will usually decrease but the runtime of the S2_easy formula will increase\&. For large pi(x) computations with x >= 10^25 you can usually achieve a significant speedup by increasing alpha\&.
.sp
The alpha tuning factor is also very useful for verifying 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 but alpha_z is increased then the runtime of the B formula will increase but the runtime of the A, C and D formulas will decrease\&. For large pi(x) computations with x >= 10^25 you can usually achieve a significant speedup by decreasing alpha_y and increasing alpha_z\&. For convenience when you increase alpha_z using \fB\-\-alpha\-z\fR=\fINUM\fR then alpha_y is automatically decreased\&.
.sp
Both the alpha_y and alpha_z tuning factors are also very useful for verifying pi(x) computations\&. You compute pi(x) twice but for the second computation you use a slightly different alpha_y or alpha_z factor\&. 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 "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