中文
Annals of Mathematics 179 (2014), pages 1121–1174

Primes keep coming in close pairs, forever

A plain-language, hands-on walk through Yitang Zhang's paper “Bounded gaps between primes”. No number theory background needed. Every panel on this page computes live in your browser.

Page numbers refer to your PDF (55 pages; PDF page 2 is journal page 1121). Anything I add from outside the paper is marked Background.

Chapter 1

The question

Primes thin out. Near a number x, the average distance from one prime to the next is about log x (the natural logarithm), so around a million the average gap is about 14, and around a number with 100 digits it is about 230. The average gap grows without limit.

Yet small gaps keep turning up. 11 and 13, 101 and 103, 1,000,037 and 1,000,039. Pairs like these, two apart, are twin primes. The twin prime conjecture says they never stop. Nobody can prove it.

Before 2013 nobody could prove even a much weaker statement: that there is some fixed number, however large, such that primes keep coming closer together than that number forever. Zhang proved it.

Zhang's theorem: there are infinitely many pairs of consecutive primes that differ by less than 70,000,000.

See the two facts side by side. Move the window further out: the average gap grows, but the small gaps do not go away.

Gaps between consecutive primes
–average gap in the window
–gaps no larger than your limit
–largest gap in the window
Bars: how many gaps of each size (2, 4, 6, … and “40 or more”). Green bars are within your limit.

In symbols, with pn the n-th prime, the paper's abstract reads:

lim inf (pn+1 − pn) < 7 × 107

“lim inf” is the smallest value that the gap keeps returning to, however far out you go. The twin prime conjecture says it equals 2. Before Zhang, it was not known to be finite.

Chapter 2 · Theorem 1, PDF page 3

What exactly is proved

Zhang does not look for pairs of primes directly. He looks at patterns. Take a fixed list of shifts, for example {0, 2, 6}, and slide it along the number line: n, n+2, n+6. Sometimes all three are prime (5, 7, 11; then 11, 13, 17; then 17, 19, 23).

Some patterns can never be all prime more than once. With {0, 2, 4}, one of the three numbers is always a multiple of 3. A pattern with no such built-in obstacle is called admissible: for every prime p, the shifts leave at least one remainder mod p unused.

Test a pattern
–positions n below 1,000,000 where every number is prime
–positions where at least two are prime
Up to 10 shifts, each between 0 and 200, separated by commas.

It is believed that every admissible pattern is all-prime infinitely often. That is far out of reach. Zhang proves something weaker that is still enough:

Theorem 1. Take any admissible pattern with 3,500,000 shifts. Then infinitely often, at least two of its 3,500,000 numbers are prime.

Two primes inside one copy of the pattern are at most as far apart as the pattern is wide. So all that is left is to exhibit one admissible pattern with 3.5 million shifts and measure its width.

Where 70 million comes from

Zhang's pattern is simple: take k primes that are all bigger than k. This is always admissible. For a prime p ≤ k, none of the shifts is a multiple of p, so remainder 0 is unused. For p > k, there are too few shifts to use up all p remainders.

Build Zhang's pattern: the first k primes after k
–smallest shift
–largest shift
–width of the pattern
For Zhang's k = 3,500,000 this construction runs from 3,500,017 to 63,374,611: a width of 59,874,594 (computed for this tutorial). The paper only needs the easier fact that there are more than 3.5 million primes between 3.5 million and 70 million, which gives “less than 7 × 107”.

Zhang says plainly that the number is not optimal: “This result is, of course, not optimal… to replace the bound by a value as small as possible is an open problem that will not be discussed in this paper.” What mattered was that it is finite.

Check yourself: is {0, 2, 6, 8} admissible? What about {0, 2, 8}?

{0, 2, 6, 8}: mod 2 only remainder 0 is used; mod 3 the remainders are 0, 2, 0, 2, so 1 is free. It is admissible (5, 7, 11, 13 is an example). {0, 2, 8}: mod 3 the remainders are 0, 2, 2, so 1 is free, and mod 2 only 0 is used. Admissible too. Try both in the panel.

Chapter 3 · Section 2, PDF pages 4–7

The weighing idea

The plan comes from Goldston, Pintz and Yıldırım (GPY), whose 2005 work Zhang builds on (reference [7]). It is an averaging argument.

Fix the pattern. For each position n between x and 2x, count how many of the numbers n + hi are prime. If the average count were above 1, some position would have at least 2 primes, and we would be done.

A plain average is hopeless: primes are rare, so the average count is tiny. GPY's idea is a weighted average. Give each position n a weight that is never negative and is large when the numbers n + hi have few small prime factors, because that is when they are likely to be prime.

If the weighted average number of primes in the pattern exceeds 1, then some position has at least two primes.

The weight is a square, λ(n)², which guarantees it is never negative. Inside is a sum over the divisors d of the product (n+h1)(n+h2)⋯, but only divisors smaller than a cutoff D:

λ(n) = Σd divides the product, d < D  μ(d) · (log D/d)k+l

Here μ(d) is +1 or −1 according to whether d has an even or odd number of prime factors. You do not need the formula. What matters is the single dial D: the larger the cutoff D, the better the weights find the primes. Try it on real numbers.

Weighted average number of primes in the pattern
positions n from 500,000 to 540,000
The dashed line marks 1, the target. Here the computer simply evaluates the weights, so any D is allowed. A proof has to estimate the same sums for every large x, and that is where D gets limited. (The panel uses l = 0, the simplest choice of the exponent.)

In the paper the two sums are called S1 (the total weight) and S2 (the weight times the primes found, each prime counted as its logarithm). The goal is inequality (2.3):

S2 − (log 3x) · S1 > 0

This is “weighted average above 1” in different clothes. Each prime below 3x contributes less than log 3x, so if some position contributes more than log 3x, it holds at least two primes.

Chapter 4

A hair's breadth short

Why can a proof not use a large D? Computing S2 requires knowing, for each d, how many primes fall in certain remainder classes mod d. The expected answer is an equal share for each allowed class. When the square is expanded, the moduli run up to D².

The best known result of this kind is the Bombieri–Vinogradov theorem (1965): on average, primes are evenly spread over remainder classes for all moduli up to about √x. People say primes have level of distribution ½. So D² may be at most x1/2, which means

D = x1/4   is all that was allowed.

And with that D, the weighted average comes out just below 1, however many shifts the pattern has. Working out both sums (Sections 4 and 5 of the paper) gives, for a pattern with k shifts and D = x1/4 + ϖ:

weighted average ≈ kk + 2l + 1 · 2l + 12l + 2 · (1 + 4ϖ)

Both fractions are below 1, though they can be pushed as close to 1 as you like by taking l large and k much larger. So with ϖ = 0 the average approaches 1 from below and never reaches it. With any ϖ > 0, however small, the factor (1 + 4ϖ) tips it over.

GPY proved in 2005: if primes had level of distribution even slightly above ½, bounded gaps would follow. Their result missed by, in their words, “a hair's breadth”.

Nobody could prove a level above ½. It was known for some special situations (work of Fouvry, Iwaniec, Bombieri and Friedlander in the 1980s, references [1]–[3] and [5]), but those results required the remainder class to stay fixed while the modulus varies, and GPY's sums do not have that shape. The question of whether these two lines of work could be combined was posed in the GPY paper itself. Zhang's paper answers it: yes.

Chapter 5 · Section 2, PDF pages 6–7

Zhang's two observations

Zhang takes D = x1/4 + ϖ with ϖ = 1/1168. That is beyond what Bombieri–Vinogradov allows. He makes it work with one change to the weights and two observations about that change.

The change. In the sum that defines λ(n), keep only divisors d whose prime factors are all small: below xϖ. Such numbers are called smooth. In the paper this is the condition “d divides 𝒫”, where 𝒫 is the product of all primes below xϖ.

Observation 1: dropping the non-smooth divisors costs almost nothing

The divisors thrown away are those with a prime factor above xϖ. Zhang shows their total contribution to the main terms is a fraction κ of the whole, with

κ1 < e−1200

That is a decimal point followed by more than 500 zeros. The weighted average is unchanged for all practical purposes. This is Sections 4 and 5, and it is where the size of the pattern gets fixed: the estimate is only this small when k is in the millions (Chapter 6 lets you see why).

Observation 2: smooth moduli can be split wherever you like

This is the part Zhang calls “the most novel part of the proof”. A smooth number is a product of many small primes. So you can build a divisor of almost any size you want by multiplying some of those primes together. Zhang writes each modulus as

d = r · q

with r close to whatever size the argument needs (Lemma 4). A prime modulus cannot be split at all. The techniques for going beyond level ½ all need a modulus that factors into two parts of the right sizes, and smooth moduli always do.

Split a smooth number near any target

With this, Zhang proves the one new fact about primes that the whole paper rests on:

Theorem 2. Primes are evenly spread over the relevant remainder classes, on average, for all smooth moduli up to x1/2 + 2ϖ.

It is a Bombieri–Vinogradov theorem that goes past the square-root barrier, at the price of using only smooth moduli and only the particular remainder classes that the pattern needs. Observation 1 says the first restriction is harmless. Chapters 7 and 8 sketch how Theorem 2 is proved. It takes pages 24–53, more than half of the paper.

Chapter 6 · Sections 4–5, PDF pages 16–24

The winning margin

Assume Theorem 2. Then both sums can be evaluated with D = x1/4 + ϖ, and the final step of the proof of Theorem 1 is one inequality, (5.8) in the paper: a constant ω must be positive. In the language of Chapter 3, the weighted average must exceed 1.

Zhang's choices are k0 = 3,500,000 shifts, exponent parameter l0 = 180, and ϖ = 1/1168. Move the dials and see what each one does.

Does the proof close?
–weighted average number of primes in the pattern (must exceed 1)
–κ₁, the cost of keeping only smooth divisors
Uses the paper's formulas (4.19), (5.5) and (5.7). With Zhang's values the page gets log κ₁ ≈ −1229, in line with his bound κ₁ < e−1200.

Three things to notice.

With ϖ = 0 nothing works. The average stays below 1 for every k0 and l0. This is the hair's breadth.

With Zhang's values the average is about 1.0005. One part in two thousand above the target. The margin is thin because ϖ is tiny: the factor 1 + 4ϖ is only 1.0034, and the two fractions from Chapter 4 must together stay above 1/1.0034. That forces l0 into the hundreds and k0 far larger still.

Lower k0 a little and κ₁ explodes. The smoothness cost is (1 + 4ϖ)−k₀ multiplied by some enormous counting factors. Only when k0 reaches about 3 million does the first factor win. With Zhang's own bounds, the page finds the proof closes from roughly k0 = 2.95 million upward (using l0 near 150). Zhang rounded up generously and noted the bounds were “crude”.

Check yourself: why does a small ϖ force a huge k₀?

Two reasons. First, the average is (two fractions below 1) × (1 + 4ϖ); with ϖ tiny the fractions must be extremely close to 1, which needs l₀ large and k₀ much larger than l₀. Second, the cost of restricting to smooth divisors shrinks like (1 + 4ϖ)−k₀, which is only small when k₀ is large compared with 1/ϖ.

Chapter 7 · Sections 6–7, PDF pages 24–29

Breaking primes into pieces

Now the hard half: proving Theorem 2. The claim is about how primes spread over remainder classes for moduli d between x1/2 and x1/2 + 2ϖ. (Below x1/2, Bombieri–Vinogradov already does the job.)

Primes are hard to handle directly because “being prime” has no formula. The standard move is to replace the primes by sums of simpler things. Zhang uses an identity of Heath-Brown (Lemma 6). It rewrites the prime-detecting function as a combination of terms, each of which is a product structure: numbers of the form

n = m1 · m2 ⋯ mj · n1 · n2 ⋯ nj

with each factor restricted to a known size range and up to 20 factors in all. The m's carry awkward ±1 signs but are small (at most x1/10). The n's have no signs at all: they are just “all integers in a range”, the best-behaved thing there is.

How a term can be handled depends on how the sizes of its factors can be grouped. On a logarithmic scale, the sizes are lengths that add up to 1. Zhang sorts every term into three types (Section 6).

Group the factors into two blocks: how big is one block?
03/81/25/81
Type I and II
The factors can be grouped into two blocks, one of which has size between about x3/8 and x1/2. Two blocks of balanced size is the classical situation, handled by the “dispersion method”. Type II is the nearly perfectly balanced case, both blocks close to x1/2, which needs slightly different bookkeeping.
Type III
No grouping gives balanced blocks. Zhang shows by a short counting argument that this can only happen when the term has three or four large sign-free factors, each around x1/4 or more. Three smooth ranges multiplied together is another situation with its own tools.
Trivial
One factor is so long (beyond x1/2 + 3ϖ) and so regular that the even spread is obvious.

The precise boundaries are 3/8 + 8ϖ and 1/2 − 4ϖ. The small ϖ-corrections are where the final value 1/1168 comes from: each type needs a little room, and 1/1168 is what is left when every case is squeezed to fit at once.

Chapter 8 · Sections 7–14, PDF pages 27–53

Square-root cancellation

This is the most technical part of the paper. Here is the shape of the argument and the one idea that drives it.

Types I and II: the dispersion method

The term has two blocks, n = m · n′. We want to show the products are evenly spread over remainders mod d = rq. The block of m's carries coefficients we know nothing about. The method, due to Linnik and developed by Fouvry, Iwaniec, Bombieri and Friedlander, removes them:

1. Square. The Cauchy–Schwarz inequality replaces “unknown coefficients × unevenness” by “the unevenness squared, summed over m”. The unknown coefficients are gone (formula (7.7)).

2. Expand. A square (actual − expected)² opens into three sums: actual², −2 × actual × expected, expected². The paper calls them 𝒮₁, 𝒮₂, 𝒮₃ and handles them in Sections 10, 9 and 8.

3. Cancel. Each of the three has the same main term, so the main terms cancel exactly: 1 − 2 + 1 = 0. What is left is the “dispersion”: a collection of oscillating sums.

4. Bound the oscillating sums. These turn out to be Kloosterman sums, and this is where the factorization d = rq is used: r is chosen just below the size of the second block (Sections 11 and 12).

The one idea: sums of waves cancel like random signs

A Kloosterman sum adds up p − 1 points on the unit circle, picked by a rule that involves division mod p:

S(a, b; p) = Σn = 1 … p−1  e2πi (a·n + b/n) / p

If the points all lined up, the sum would have size p − 1. In fact they point in scattered directions and mostly cancel. André Weil proved in 1948 that the sum never exceeds 2√p: exactly the cancellation you would get from random directions. This is called square-root cancellation.

Kloosterman sums S(1, b; p) for every b
–largest sum that occurs
–Weil's limit 2√p
–size with no cancellation
Every bar stays between the dashed lines. Zhang needs only a small saving over the trivial size, because his moduli are only slightly beyond x1/2. Weil's bound gives far more than enough (Lemma 11).

Type III: three smooth factors and Deligne's theorem

Here the term is essentially “numbers written as a product of three factors of known sizes”, a problem studied by Friedlander and Iwaniec and by Heath-Brown in the 1980s. After similar steps, the oscillating sum that comes out is a three-variable relative of the Kloosterman sum. The needed square-root bound for it (Lemma 12) is due to Birch and Bombieri, and it rests on Deligne's 1974 proof of the Weil conjectures, one of the deepest results of 20th-century mathematics.

On its own, that method stops a little short of the range Zhang needs. His addition is again the factorization d = rq, this time with r small. Shifting one variable by multiples of r and averaging gains an extra factor of √r, which is just enough. The result (formula (13.4)) is a saving of xϖ/3 for each modulus separately.

TypeShapeHow d = rq is usedDeep inputSections
I, IITwo balanced blocksr just below the second block's sizeWeil's bound for Kloosterman sums7–12
IIIThree long sign-free factorsr small; shift by multiples of rBirch–Bombieri, via Deligne13–14

With all three types bounded, Theorem 2 follows, and with it Theorem 1.

Chapter 9

What happened next

The whole proof on one screen:

StepWhat it doesWhere
PatternAn admissible pattern of 3.5 million shifts, width under 70 millionTheorem 1
WeightsGPY weights, restricted to smooth divisors, with D = x1/4 + 1/1168Section 2
CostRestricting to smooth divisors loses less than e−1200Sections 4–5
New inputPrimes are evenly spread for smooth moduli beyond x1/2Theorem 2
DecomposeHeath-Brown's identity; Types I, II, IIISection 6
EstimateDispersion method, Kloosterman sums, DeligneSections 7–14
TotalWeighted average ≈ 1.0005 > 1, so two primes in one pattern(5.8)
Background. Everything in this chapter below this line is from outside the paper.

Zhang submitted the paper in April 2013. Once it was public, 70 million began to fall within weeks, mostly through an open online collaboration (the Polymath8 project) that optimized each step of Zhang's argument. In November 2013 James Maynard, and independently Terence Tao, found a different way to choose the weights that needs only the classical Bombieri–Vinogradov theorem and gives much smaller numbers. Click through the record.

The bound on the gap

The record has stood at 246 since 2014. Getting from 246 to 2, the twin prime conjecture, is believed to need a new idea: the same “parity” obstacle that stops sieve methods from proving Goldbach's conjecture stands in the way here too.

Chapter 10

Reading guide

Section by section

PDF pagesJournal pagesSectionTour chapter
2–31121–1122Abstract; 1. Introduction, Theorem 11, 2
4–81123–11272. Notation and sketch of the proof; Theorem 23–5
8–161127–11353. Lemmas 1–12 (tools quoted or prepared)5, 7, 8
16–221135–11414. Upper bound for S₁; κ₁ < e−12006
22–241141–11435. Lower bound for S₂; proof of Theorem 16
24–261143–11456. Combinatorial arguments: Types I, II, III7
27–331146–11527–9. The dispersion method; the two easier sums8
33–431152–116210–12. The hard sum; Type I and Type II estimates8
43–541162–117313–14. The Type III estimate8

A good order for a first reading of the original: Sections 1 and 2 (PDF pages 3–8) slowly, then the end of Section 5 (pages 23–24) to see the final inequality, then Section 6. Sections 7–14 are for readers who already know the 1980s papers they build on.

Symbols you will meet

ℋ
The pattern: a fixed set of shifts h₁, …, hk₀.
P(n)
The product (n + h₁)(n + h₂)⋯(n + hk₀).
θ(n)
log n if n is prime, otherwise 0. Counting primes with this weight makes formulas cleaner.
λ(n)
The GPY weight (its square is what is used).
ℒ
Shorthand for log x.
ϖ
“Varpi”, a variant of the letter π. The small extra exponent, 1/1168.
𝒫
The product of all primes below xϖ. “d divides 𝒫” means d is smooth and has no repeated prime factor.
n ~ x
n runs from x to 2x.
Δ(γ; d, c)
The unevenness: (actual count in the class c mod d) minus (the equal share).
𝒞i(d)
The particular remainder classes mod d that the pattern cares about.
α ∗ β
Dirichlet convolution: the sequence you get by multiplying a number from α's range with one from β's range.
A ≪ B
A is at most a constant times B.
𝔖
The “singular series”: a positive constant depending only on the pattern. It cancels out of the final comparison.

Companion tour: Chen Jingrun's 1+2 theorem.