primesieve(1)
=============
:doctype: manpage

NAME
----
primesieve - generate prime numbers

SYNOPSIS
--------
*primesieve* ['START'] 'STOP' ['OPTION']...

DESCRIPTION
-----------
Generate the prime numbers and/or prime k-tuplets inside ['START', 'STOP']
(< 2\^64) using the segmented sieve of Eratosthenes. primesieve includes a
number of extensions to the sieve of Eratosthenes which significantly improve
performance: multiples of small primes are pre-sieved, it uses wheel
factorization to skip multiples with small prime factors and it uses the bucket
sieve algorithm which improves cache efficiency when sieving > 2^32. primesieve
is also multi-threaded, it uses all available CPU cores by default for counting
primes and for finding the nth prime.

The segmented sieve of Eratosthenes has a runtime complexity of O(n log log n)
operations and it uses O(n\^(1/2)) bits of memory. More specifically primesieve
uses 8 bytes per sieving prime, hence its memory usage can be approximated by
PrimePi(n^(1/2)) * 8 bytes (per thread).

OPTIONS
-------

*-c*['NUM+']::
*--count*[='NUM+']::
	Count primes and/or prime k-tuplets, 1 \<= 'NUM' \<= 6. Count primes: *-c*
	or *--count*, count twin primes: *-c2* or *--count=2*, count prime
	triplets: *-c3* or *--count=3*, ... You can also count primes and prime
	k-tuplets at the same time, e.g. *-c123* counts primes, twin primes and
	prime triplets.

*--cpu-info*::
	Print CPU information: CPU name, frequency, number of cores, cache sizes, ...

*-d, --dist*='DIST'::
	Sieve the interval ['START', 'START' + 'DIST'].

*-h, --help*::
	Print this help menu.

*-n, --nth-prime*::
	Find the nth prime, e.g. 100 *-n* finds the 100th prime. If 2 numbers 'N'
	'START' are provided finds the nth prime > 'START', e.g. 2 100 *-n* finds
	the 2nd prime > 100.

*--no-status*::
	Turn off the progressing status.

*-p*['NUM']::
*--print*[='NUM']::
	Print primes or prime k-tuplets, 1 \<= 'NUM' \<= 6. Print primes: *-p*,
	print twin primes: *-p2*, print prime triplets: *-p3*, ...

*-q, --quiet*::
	Quiet mode, prints less output.

*-R, --RiemannR*::
	Approximate PrimePi(x) using the Riemann R function: R(x).

*--RiemannR-inverse*::
	Approximate the nth prime using the inverse Riemann R function: R^-1(x).

*-s, --size*='SIZE'::
	Set the size of the sieve array in KiB, 16 \<= 'SIZE' \<= 8192. By default
	primesieve uses a sieve size that matches your CPU's L1 cache size (per
	core) or is slightly smaller than your CPU's L2 cache size. This setting is
	crucial for performance, on exotic CPUs primesieve sometimes fails to
	determine the CPU's cache sizes which usually causes a big slowdown. In
	this case you can get a significant speedup by manually setting the sieve
	size to your CPU's L1 or L2 cache size (per core).

*-S, --stress-test*[='MODE']::
	Run a stress test. The 'MODE' can be either CPU (default) or RAM. The CPU
	'MODE' uses little memory (< 5 MiB per thread) and puts the highest load on
	the CPU. The RAM 'MODE' on the other hand uses much more memory than the
	CPU 'MODE' (each thread uses about 1.16 GiB), but the CPU usually won't get
	as hot as in the CPU 'MODE'. Stress testing keeps on running until either a
	miscalculation occurs (due to a hardware issue) or the timeout expires. The
	default timeout is 24 hours, the timeout can be changed using the
	*--timeout=SECS* option. By default the stress test uses a number of threads
	that matches the number of CPU cores, the number of threads can be changed
	using the *--threads=NUM* option.

*--test*::
	Run various correctness tests (< 1 minute).

*-t, --threads*='NUM'::
	Set the number of threads, 1 \<= 'NUM' \<= CPU cores. By default primesieve
	uses all available CPU cores for counting primes and for finding the nth
	prime.

*--time*::
	Print the time elapsed in seconds.

*--timeout*='SECS'::
	Set the stress test timeout in seconds. Units of time for seconds, minutes,
	hours, days and years are also supported with the suffix s, m, h, d or y.
	E.g. *--timeout 10m* sets a timeout of 10 minutes. The default stress test
	timeout is 24 hours.

*-v, --version*::
	Print version and license information.

EXAMPLES
--------

**primesieve 1000**::
	Count the primes \<= 1000.

**primesieve 1e6 --print**::
	Print the primes \<= 10^6.

**primesieve 1e6 --print > primes.txt**::
	Store the primes \<= 10^6 in a text file.

**primesieve 2^32 --print=2**::
	Print the twin primes \<= 2^32.

**primesieve 1e16 --dist=1e10 --threads=1**::
	Count the primes inside [10\^16, 10\^16 + 10^10] using a single thread.

HOMEPAGE
--------
https://github.com/kimwalisch/primesieve

AUTHOR
------
Kim Walisch <kim.walisch@gmail.com>
