Prime-counting function
Template:Short description Script error: No such module "redirect hatnote". Template:Log(x)
In mathematics, the prime-counting function is the function counting the number of prime numbers less than or equal to some real number Template:Mvar.[1][2] It is denoted by π(x)Script error: No such module "Check for unknown parameters". (unrelated to the [[pi|number Template:Pi]]).
A symmetric variant seen sometimes is π0(x)Script error: No such module "Check for unknown parameters"., which is equal to π(x) − <templatestyles src="Fraction/styles.css" />1⁄2Script error: No such module "Check for unknown parameters". if Template:Mvar is exactly a prime number, and equal to π(x)Script error: No such module "Check for unknown parameters". otherwise. That is, the number of prime numbers less than Template:Mvar, plus half if Template:Mvar equals a prime.
Growth rate
Script error: No such module "Labelled list hatnote". Of great interest in number theory is the growth rate of the prime-counting function.[3][4] It was conjectured in the end of the 18th century by Gauss and by Legendre to be approximately where logScript error: No such module "Check for unknown parameters". is the natural logarithm, in the sense that This statement is the prime number theorem. An equivalent statement is where liScript error: No such module "Check for unknown parameters". is the logarithmic integral function. The prime number theorem was first proved in 1896 by Jacques Hadamard and by Charles de la Vallée Poussin independently, using properties of the Riemann zeta function introduced by Riemann in 1859. Proofs of the prime number theorem not using the zeta function or complex analysis were found around 1948 by Atle Selberg and by Paul Erdős (for the most part independently).[5]
More precise estimates
In 1899, de la Vallée Poussin proved that [6] for some positive constant Template:Mvar. Here, O(...)Script error: No such module "Check for unknown parameters". is the [[big O notation|big Template:Mvar notation]].
More precise estimates of π(x)Script error: No such module "Check for unknown parameters". are now known. For example, in 2002, Kevin Ford proved that[7]
Mossinghoff and Trudgian proved[8] an explicit upper bound for the difference between π(x)Script error: No such module "Check for unknown parameters". and li(x)Script error: No such module "Check for unknown parameters".:
For values of Template:Mvar that are not unreasonably large, li(x)Script error: No such module "Check for unknown parameters". is greater than π(x)Script error: No such module "Check for unknown parameters".. However, π(x) − li(x)Script error: No such module "Check for unknown parameters". is known to change sign infinitely many times. For a discussion of this, see Skewes' number.
Exact form
For x > 1Script error: No such module "Check for unknown parameters". let π0(x) = π(x) − Template:SfracScript error: No such module "Check for unknown parameters". when Template:Mvar is a prime number, and π0(x) = π(x)Script error: No such module "Check for unknown parameters". otherwise. Bernhard Riemann, in his work On the Number of Primes Less Than a Given Magnitude, proved that π0(x)Script error: No such module "Check for unknown parameters". is equal to[9]
where μ(n)Script error: No such module "Check for unknown parameters". is the Möbius function, li(x)Script error: No such module "Check for unknown parameters". is the logarithmic integral function, Template:Mvar indexes every zero of the Riemann zeta function, and li(xTemplate:Sfrac)Script error: No such module "Check for unknown parameters". is not evaluated with a branch cut but instead considered as Ei(Template:Sfrac log x)Script error: No such module "Check for unknown parameters". where Ei(x)Script error: No such module "Check for unknown parameters". is the exponential integral. If the trivial zeros are collected and the sum is taken only over the non-trivial zeros Template:Mvar of the Riemann zeta function, then π0(x)Script error: No such module "Check for unknown parameters". may be approximated by[10]
The Riemann hypothesis suggests that every such non-trivial zero lies along Re(s) = Template:SfracScript error: No such module "Check for unknown parameters"..
Table of π(x)Script error: No such module "Check for unknown parameters"., Template:SfracScript error: No such module "Check for unknown parameters"., and li(x)Script error: No such module "Check for unknown parameters".
The table shows how the three functions π(x)Script error: No such module "Check for unknown parameters"., Template:SfracScript error: No such module "Check for unknown parameters"., and li(x)Script error: No such module "Check for unknown parameters". compared at powers of 10. See also,[3][11] and[12]
Template:Mvar π(x)Script error: No such module "Check for unknown parameters". π(x) − Template:SfracScript error: No such module "Check for unknown parameters". li(x) − π(x)Script error: No such module "Check for unknown parameters". Template:SfracScript error: No such module "Check for unknown parameters". Template:SfracScript error: No such module "Check for unknown parameters".
% error10 4 0 2 2.500 −8.57% 102 25 3 5 4.000 +13.14% 103 168 23 10 5.952 +13.83% 104 1,229 143 17 8.137 +11.66% 105 9,592 906 38 10.425 +9.45% 106 78,498 6,116 130 12.739 +7.79% 107 664,579 44,158 339 15.047 +6.64% 108 5,761,455 332,774 754 17.357 +5.78% 109 50,847,534 2,592,592 1,701 19.667 +5.10% 1010 455,052,511 20,758,029 3,104 21.975 +4.56% 1011 4,118,054,813 169,923,159 11,588 24.283 +4.13% 1012 37,607,912,018 1,416,705,193 38,263 26.590 +3.77% 1013 346,065,536,839 11,992,858,452 108,971 28.896 +3.47% 1014 3,204,941,750,802 102,838,308,636 314,890 31.202 +3.21% 1015 29,844,570,422,669 891,604,962,452 1,052,619 33.507 +2.99% 1016 279,238,341,033,925 7,804,289,844,393 3,214,632 35.812 +2.79% 1017 2,623,557,157,654,233 68,883,734,693,928 7,956,589 38.116 +2.63% 1018 24,739,954,287,740,860 612,483,070,893,536 21,949,555 40.420 +2.48% 1019 234,057,667,276,344,607 5,481,624,169,369,961 99,877,775 42.725 +2.34% 1020 2,220,819,602,560,918,840 49,347,193,044,659,702 222,744,644 45.028 +2.22% 1021 21,127,269,486,018,731,928 446,579,871,578,168,707 597,394,254 47.332 +2.11% 1022 201,467,286,689,315,906,290 4,060,704,006,019,620,994 1,932,355,208 49.636 +2.02% 1023 1,925,320,391,606,803,968,923 37,083,513,766,578,631,309 7,250,186,216 51.939 +1.93% 1024 18,435,599,767,349,200,867,866 339,996,354,713,708,049,069 17,146,907,278 54.243 +1.84% 1025 176,846,309,399,143,769,411,680 3,128,516,637,843,038,351,228 55,160,980,939 56.546 +1.77% 1026 1,699,246,750,872,437,141,327,603 28,883,358,936,853,188,823,261 155,891,678,121 58.850 +1.70% 1027 16,352,460,426,841,680,446,427,399 267,479,615,610,131,274,163,365 508,666,658,006 61.153 +1.64% 1028 157,589,269,275,973,410,412,739,598 2,484,097,167,669,186,251,622,127 1,427,745,660,374 63.456 +1.58% 1029 1,520,698,109,714,272,166,094,258,063 23,130,930,737,541,725,917,951,446 4,551,193,622,464 65.759 +1.52%
In the On-Line Encyclopedia of Integer Sequences, the π(x)Script error: No such module "Check for unknown parameters". column is sequence OEIS: A006880, π(x) − Template:SfracScript error: No such module "Check for unknown parameters". is sequence OEIS: A057835, and li(x) − π(x)Script error: No such module "Check for unknown parameters". is sequence OEIS: A057752.
The value for π(1024)Script error: No such module "Check for unknown parameters". was originally computed by J. Buethe, J. Franke, A. Jost, and T. Kleinjung assuming the Riemann hypothesis.[13] It was later verified unconditionally in a computation by D. J. Platt.[14] The value for π(1025)Script error: No such module "Check for unknown parameters". is by the same four authors.[15] The value for π(1026)Script error: No such module "Check for unknown parameters". was computed by D. B. Staple.[16] All other prior entries in this table were also verified as part of that work.
The values for 1027, 1028, and 1029 were announced by David Baugh and Kim Walisch in 2015,[17] 2020,[18] and 2022,[19] respectively.
Algorithms for evaluating π(x)Script error: No such module "Check for unknown parameters".
A simple way to find π(x)Script error: No such module "Check for unknown parameters"., if Template:Mvar is not too large, is to use the sieve of Eratosthenes to produce the primes less than or equal to Template:Mvar and then to count them.
A more elaborate way of finding π(x)Script error: No such module "Check for unknown parameters". is due to Legendre (using the inclusion–exclusion principle): given Template:Mvar, if p1, p2,…, pnScript error: No such module "Check for unknown parameters". are distinct prime numbers, then the number of integers less than or equal to Template:Mvar which are divisible by no Template:Mvar is
(where ⌊x⌋Script error: No such module "Check for unknown parameters". denotes the floor function). This number is therefore equal to
when the numbers p1, p2,…, pnScript error: No such module "Check for unknown parameters". are the prime numbers less than or equal to the square root of Template:Mvar.
The Meissel–Lehmer algorithm
Script error: No such module "Labelled list hatnote".
In a series of articles published between 1870 and 1885, Ernst Meissel described (and used) a practical combinatorial way of evaluating π(x)Script error: No such module "Check for unknown parameters".: Let p1, p2,…, pnScript error: No such module "Check for unknown parameters". be the first Template:Mvar primes and denote by Φ(m,n)Script error: No such module "Check for unknown parameters". the number of natural numbers not greater than Template:Mvar which are divisible by none of the Template:Mvar for any i ≤ nScript error: No such module "Check for unknown parameters".. Then
Given a natural number Template:Mvar, if n = π(
- REDIRECT Template:Radic
Template:Rcat shell)Script error: No such module "Check for unknown parameters". and if μ = π(
- REDIRECT Template:Radic
Template:Rcat shell) − nScript error: No such module "Check for unknown parameters"., then
Using this approach, Meissel computed π(x)Script error: No such module "Check for unknown parameters"., for Template:Mvar equal to Script error: No such module "val"., 106, 107, and 108.
In 1959, Derrick Henry Lehmer extended and simplified Meissel's method. Define, for real Template:Mvar and for natural numbers Template:Mvar and Template:Mvar, Pk(m,n)Script error: No such module "Check for unknown parameters". as the number of numbers not greater than Template:Mvar with exactly Template:Mvar prime factors, all greater than Template:Mvar. Furthermore, set P0(m,n) = 1Script error: No such module "Check for unknown parameters".. Then
where the sum actually has only finitely many nonzero terms. Let Template:Mvar denote an integer such that
- REDIRECT Template:Radic
Template:Rcat shell ≤ y ≤
- REDIRECT Template:Radic
Template:Rcat shellScript error: No such module "Check for unknown parameters"., and set n = π(y)Script error: No such module "Check for unknown parameters".. Then P1(m,n) = π(m) − nScript error: No such module "Check for unknown parameters". and Pk(m,n) = 0Script error: No such module "Check for unknown parameters". when k ≥ 3Script error: No such module "Check for unknown parameters".. Therefore,
The computation of P2(m,n)Script error: No such module "Check for unknown parameters". can be obtained this way:
where the sum is over prime numbers.
On the other hand, the computation of Φ(m,n)Script error: No such module "Check for unknown parameters". can be done using the following rules:
Using his method and an IBM 701, Lehmer was able to compute the correct value of π(109)Script error: No such module "Check for unknown parameters". and missed the correct value of π(1010)Script error: No such module "Check for unknown parameters". by 1.[20]
Further improvements to this method were made by Lagarias, Miller, Odlyzko, Deléglise, and Rivat.[21]
Other prime-counting functions
Other prime-counting functions are also used because they are more convenient to work with.
Riemann's prime-power counting function
Riemann's prime-power counting function is usually denoted as Π0(x)Script error: No such module "Check for unknown parameters". or J0(x)Script error: No such module "Check for unknown parameters".. It has jumps of Template:SfracScript error: No such module "Check for unknown parameters". at prime powers Template:Mvar and it takes a value halfway between the two sides at the discontinuities of π(x)Script error: No such module "Check for unknown parameters".. That added detail is used because the function may then be defined by an inverse Mellin transform.
Formally, we may define Π0(x)Script error: No such module "Check for unknown parameters". by
where the variable Template:Mvar in each sum ranges over all primes within the specified limits.
We may also write
where ΛScript error: No such module "Check for unknown parameters". is the von Mangoldt function and
The Möbius inversion formula then gives
where μ(n)Script error: No such module "Check for unknown parameters". is the Möbius function.
Knowing the relationship between the logarithm of the Riemann zeta function and the von Mangoldt function ΛScript error: No such module "Check for unknown parameters"., and using the Perron formula we have
Chebyshev's function
The Chebyshev function weights primes or prime powers Template:Mvar by log pScript error: No such module "Check for unknown parameters".:
For x ≥ 2Script error: No such module "Check for unknown parameters".,[22]
and
Formulas for prime-counting functions
Formulas for prime-counting functions come in two kinds: arithmetic formulas and analytic formulas. Analytic formulas for prime-counting were the first used to prove the prime number theorem. They stem from the work of Riemann and von Mangoldt, and are generally known as explicit formulae.[23]
We have the following expression for the second Chebyshev function Template:Mvar:
where
Here Template:Mvar are the zeros of the Riemann zeta function in the critical strip, where the real part of Template:Mvar is between zero and one. The formula is valid for values of Template:Mvar greater than one, which is the region of interest. The sum over the roots is conditionally convergent, and should be taken in order of increasing absolute value of the imaginary part. Note that the same sum over the trivial roots gives the last subtrahend in the formula.
For Π0(x)Script error: No such module "Check for unknown parameters". we have a more complicated formula
Again, the formula is valid for x > 1Script error: No such module "Check for unknown parameters"., while Template:Mvar are the nontrivial zeros of the zeta function ordered according to their absolute value. The first term li(x)Script error: No such module "Check for unknown parameters". is the usual logarithmic integral function; the expression li(xρ)Script error: No such module "Check for unknown parameters". in the second term should be considered as Ei(ρ log x)Script error: No such module "Check for unknown parameters"., where EiScript error: No such module "Check for unknown parameters". is the analytic continuation of the exponential integral function from negative reals to the complex plane with branch cut along the positive reals. The final integral is equal to the series over the trivial zeros:
Thus, Möbius inversion formula gives us[10]
valid for x > 1Script error: No such module "Check for unknown parameters"., where
is Riemann's R-function[24] and μ(n)Script error: No such module "Check for unknown parameters". is the Möbius function. The latter series for it is known as Gram series.[25][26] Because log x < xScript error: No such module "Check for unknown parameters". for all x > 0Script error: No such module "Check for unknown parameters"., this series converges for all positive Template:Mvar by comparison with the series for Template:Mvar. The logarithm in the Gram series of the sum over the non-trivial zero contribution should be evaluated as ρ log xScript error: No such module "Check for unknown parameters". and not log xρScript error: No such module "Check for unknown parameters"..
Folkmar Bornemann proved,[27] when assuming the conjecture that all zeros of the Riemann zeta function are simple,[note 1] that
where Template:Mvar runs over the non-trivial zeros of the Riemann zeta function and t > 0Script error: No such module "Check for unknown parameters"..
The sum over non-trivial zeta zeros in the formula for π0(x)Script error: No such module "Check for unknown parameters". describes the fluctuations of π0(x)Script error: No such module "Check for unknown parameters". while the remaining terms give the "smooth" part of prime-counting function,[28] so one can use
as a good estimator of π(x)Script error: No such module "Check for unknown parameters". for x > 1Script error: No such module "Check for unknown parameters".. In fact, since the second term approaches 0 as x → ∞Script error: No such module "Check for unknown parameters"., while the amplitude of the "noisy" part is heuristically about Template:SfracScript error: No such module "Check for unknown parameters"., estimating π(x)Script error: No such module "Check for unknown parameters". by R(x)Script error: No such module "Check for unknown parameters". alone is just as good, and fluctuations of the distribution of primes may be clearly represented with the function
Inequalities
Ramanujan[29] proved that the inequality
holds for all sufficiently large values of Template:Mvar.
Here are some useful inequalities for π(x)Script error: No such module "Check for unknown parameters"..
The left inequality holds for x ≥ 17Script error: No such module "Check for unknown parameters". and the right inequality holds for x > 1Script error: No such module "Check for unknown parameters".. The constant 1.25506 is 30Template:SfracScript error: No such module "Check for unknown parameters". to 5 decimal places, as π(x) Template:SfracScript error: No such module "Check for unknown parameters". has its maximum value at x = p30 = 113Script error: No such module "Check for unknown parameters"..[30]
Pierre Dusart proved in 2010:[31]
More recently, Dusart has proved[32] (Theorem 5.1) that
for x ≥ 88789Script error: No such module "Check for unknown parameters". and x > 1Script error: No such module "Check for unknown parameters"., respectively.
Going in the other direction, an approximation for the Template:Mvarth prime, Template:Mvar, is
Here are some inequalities for the Template:Mvarth prime. The lower bound is due to Dusart (1999)[33] and the upper bound to Rosser (1941).[34]
The left inequality holds for n ≥ 2Script error: No such module "Check for unknown parameters". and the right inequality holds for n ≥ 6Script error: No such module "Check for unknown parameters".. A variant form sometimes seen substitutes An even simpler lower bound is[35]
which holds for all n ≥ 1Script error: No such module "Check for unknown parameters"., but the lower bound above is tighter for n > ee ≈15.154Script error: No such module "Check for unknown parameters"..
In 2010 Dusart proved[31] (Propositions 6.7 and 6.6) that
for n ≥ 3Script error: No such module "Check for unknown parameters". and n ≥ 688383Script error: No such module "Check for unknown parameters"., respectively.
In 2024, Axler[36] further tightened this (equations 1.12 and 1.13) using bounds of the form
proving that
for n ≥ 2Script error: No such module "Check for unknown parameters". and n ≥ 3468Script error: No such module "Check for unknown parameters"., respectively. The lower bound may also be simplified to f(n, w2)Script error: No such module "Check for unknown parameters". without altering its validity. The upper bound may be tightened to f(n, w2 − 6w + 10.667)Script error: No such module "Check for unknown parameters". if n ≥ 46254381Script error: No such module "Check for unknown parameters"..
There are additional bounds of varying complexity.[37][38][39]
The Riemann hypothesis
The Riemann hypothesis implies a much tighter bound on the error in the estimate for π(x)Script error: No such module "Check for unknown parameters"., and hence to a more regular distribution of prime numbers,
Specifically,[40]
Script error: No such module "Footnotes". proved that the Riemann hypothesis implies that for all x ≥ 2Script error: No such module "Check for unknown parameters". there is a prime Template:Mvar satisfying
See also
References
<templatestyles src="Reflist/styles.css" />
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "Template wrapper".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ See also Theorem 23 of Script error: No such module "citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "citation/CS1". Includes 600,000 value of π(x)Script error: No such module "Check for unknown parameters". for 1014 ≤ x ≤ 1.6×1018Script error: No such module "Check for unknown parameters".
- ↑ Template:Cite thesis
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "Template wrapper".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "Template wrapper".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
Script error: No such module "Check for unknown parameters".
Notes
<templatestyles src="Reflist/styles.css" />
- ↑ Montgomery showed that (assuming the Riemann hypothesis) at least two thirds of all zeros are simple.
Script error: No such module "Check for unknown parameters".
External links
- Chris Caldwell, The Nth Prime Page at The Prime Pages.
- Tomás Oliveira e Silva, Tables of prime-counting functions.
- Script error: No such module "citation/CS1".