| primeCount | R Documentation |
\pi(x)
Prime counting function for counting the prime numbers less than an integer, n, using Legendre's formula. It is based on the the algorithm developed by Kim Walisch found here: kimwalisch/primecount.
primeCount(n, nThreads = NULL)
n |
Positive number |
nThreads |
Specific number of threads to be used. The default is |
Legendre's Formula for counting the number of primes less than n makes use of the inclusion-exclusion principle to avoid explicitly counting every prime up to n. It is given by:
\pi(x) = \pi(\sqrt x) + \Phi(x, \sqrt x) - 1
Where \Phi(x, a) is the number of positive integers less than or equal to x that are relatively prime to the first a primes (i.e. not divisible by any of the first a primes). It is given by the recurrence relation (p_a is the ath prime (e.g. p_4 = 7)):
\Phi(x, a) = \Phi(x, a - 1) + \Phi(x / p_a, a - 1)
This algorithm implements five modifications developed by Kim Walisch for calculating \Phi(x, a) efficiently.
Cache results of \Phi(x, a)
Calculate \Phi(x, a) using \Phi(x, a) = (x / pp) * \phi(pp) + \Phi(x mod pp, a) if a <= 6
pp = 2 * 3 * ... * prime[a]
\phi(pp) = (2 - 1) * (3 - 1) * ... * (prime[a] - 1) (i.e. Euler's totient function)
Calculate \Phi(x, a) using \pi(x) lookup table
Calculate all \Phi(x, a) = 1 upfront
Stop recursion at 6 if \sqrt x >= 13 or \pi(\sqrt x) instead of 1
Whole number representing the number of prime numbers less than or equal to n.
The maximum value of n is 2^{53} - 1
Joseph Wood
Computing \pi(x): the combinatorial method
Tomás Oliveira e Silva, Computing pi(x): the combinatorial method, Revista do DETUA, vol. 4, no. 6, March 2006, p. 761. https://sweet.ua.pt/tos/bib/5.4.pdf
primeSieve
## Get the number of primes less than a billion
primeCount(10^9)
## Using nThreads
system.time(primeCount(10^10, nThreads = 2))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.