← 首页 · Erdős Problem #306 · 人人能懂版 · 只需小学分数

一道数学难题的
“说人话”讲解

这一页把 Erdős 第 306 号问题、以及那套高深证明的核心思路,讲成高中生(甚至认真的初中生)都能跟下来的样子。 全程只用加减乘除和分数通分,遇到公式都会先用大白话解释。想看严谨的机器验证版本,见 技术总览 与四个详解页。

一句话
有一种特别的分数积木,长得像 $\dfrac{1}{6},\dfrac{1}{10},\dfrac{1}{15},\dfrac{1}{21}\dots$。 问:随便给你一个正分数目标(分母不含平方因子),你总能挑几块不同的这种积木,把它们加起来刚好等于目标吗? 答案:能。本页讲“为什么能”,以及数学家是用什么绝招证出来的。

1. 先玩一下:什么是“分数积木” the building blocks

我们只允许用一种分数当积木:分母是“两个不同素数相乘”的 $\dfrac1n$。素数就是 $2,3,5,7,11\dots$ 这些只能被 1 和自己整除的数。把两个不一样的素数乘起来,再取倒数,就得到一块积木:

积木分母怎么来的大小
$\dfrac{1}{6}$$6=2\times3$≈ 0.167
$\dfrac{1}{10}$$10=2\times5$≈ 0.100
$\dfrac{1}{15}$$15=3\times5$≈ 0.067
$\dfrac{1}{14}$$14=2\times7$≈ 0.071
$\dfrac{1}{21}$$21=3\times7$≈ 0.048
$\dots$$\dots$越往后越小

注意:像 $\dfrac14$ 不算积木,因为 $4=2\times2$ 是同一个素数乘自己;$\dfrac1{12}$ 也不算,因为 $12=2\times2\times3$。必须是两个不同素数,各出现一次。数学里这种数叫“无平方因子的半素数”,名字吓人,其实就是上面这么简单。

动手验一下:三块积木刚好拼成 $\dfrac13$

取 $\dfrac16,\dfrac1{10},\dfrac1{15}$。通分到 30(因为 $30=2\times3\times5$):

$$\frac16=\frac{5}{30},\quad \frac1{10}=\frac{3}{30},\quad \frac1{15}=\frac{2}{30}.$$

加起来:$\dfrac{5+3+2}{30}=\dfrac{10}{30}=\dfrac13$。刚刚好!

再来一个更短的:$\dfrac1{10}+\dfrac1{15}=\dfrac{3}{30}+\dfrac{2}{30}=\dfrac{5}{30}=\dfrac16$。两块积木拼出了第三块的大小。

1/6 1/10 1/15 目标 = 1/3 0 1 整根长条代表 1;三块积木 5/30 + 3/30 + 2/30 正好填到 1/3 处
图 1 · 把 1 画成一根长条:三块积木 $\tfrac16,\tfrac1{10},\tfrac1{15}$ 首尾相接,终点正好落在 $\tfrac13$。

2. 题目到底在问什么 the actual question

刚才我们凑出了 $\dfrac13$ 和 $\dfrac16$。问题问的是一般情况

Erdős 第 306 号问题
随便给一个正分数目标 $\dfrac{a}{b}$(比如 $\dfrac{5}{7}$、$\dfrac{4}{15}$、甚至大于 1 的 $\dfrac{9}{2}$)。 只要分母 $b$ 不含平方因子,是不是能挑出若干块互不相同的分数积木,把它们相加得到恰好等于这个目标?

“分母不含平方因子”是什么意思?就是 $b$ 分解成素数以后,没有哪个素数出现两次。比如 $15=3\times5$ 可以,$7$ 可以,$30=2\times3\times5$ 可以;但 $12=2^2\times3$ 不行,$50=2\times5^2$ 不行。

为什么必须加这个条件?(这一步你完全能自己想通)

每块积木的分母($6,10,15,\dots$)自己都不含平方因子。把若干个这样的分数加起来、约分之后,最后的分母也一定不含平方因子——因为通分用到的公分母就是这些干净分母的最小公倍数,它还是干净的。

所以:如果目标能被积木拼出来,它的分母本来就不含平方因子。反过来,含平方因子的目标(如 $\tfrac14$)根本不可能拼出来。题目要求“$b$ 不含平方因子”,正是把范围收在唯一有可能成立的边界上——多一分做不到,少一分则本页要讲的绝招保证做得到。

3. 难在哪儿? why it's not obvious

你可能会想:分数嘛,多凑几个不就行了?但仔细想有三个坎:

合起来,这就像:用一套古怪的硬币凑出一个精确金额,每种硬币只有一枚,而且硬币面额是稀奇古怪的分数。凑一两个目标靠手气;要证明“无论什么目标都一定凑得出”,靠手气就不行了——你需要一个对所有情况都管用的理由。这正是难点,也是为什么它值得一个高深证明。

4. 高手的三个绝招 the three key ideas

数学家没有去“碰运气找组合”,而是用了三个层层递进的绝招。理解了这三招,你就抓住了整个证明的灵魂。

绝招一 · 不去“找”,改去“数”

想证明“至少存在一种拼法”,最聪明的办法往往不是真把它找出来,而是去数一数一共有多少种合格拼法。如果你能证明这个数目大于 0,那就一定至少有一种——哪怕你根本说不出它长什么样。

这跟“抽屉原理”是一个味道:我不告诉你哪只抽屉挤了两只袜子,但我能证明一定有一只这样的抽屉。这里也是:我不指出具体拼法,但我证明合格拼法的总数不是零

绝招二 · 用“旋转指针”来数

可问题来了:合格拼法要满足“加起来恰好等于目标”这个苛刻条件,怎么把满足它的方案数出来?这里有一个漂亮的物理式技巧。

把“等式成立”变成“指针指向正前方”

给每一种候选拼法配一根指针(一个箭头)。规则设计成这样:

现在把所有候选拼法的指针叠加求平均。指向四面八方的“不合格”指针会互相抵消(就像一群人往各个方向拉一个物体,合力接近零);而所有“合格”指针都乖乖指向正右方,不会被抵消。于是这个平均值,正好等于合格拼法的净数量

数学上这根指针就是复数 $e^{2\pi i\,\times(\text{偏差})}$,“叠加平均正好数出合格个数”这件事叫正交性单位根滤波。名字不重要,重要的是那幅画面:错的互相抵消,对的留下来

不合格拼法:指针四散 → 平均 ≈ 0 合格拼法:指针齐刷刷向右 → 累加成正数
图 2 · 绝招二的画面:把每种拼法变成一根指针,一平均,错的自相抵消,对的留下来——留下来的“净量”就是合格拼法的个数。

绝招三 · 主音 vs 杂音(这是“圆法”的心脏)

绝招二把“数方案”变成了“把一大堆指针沿着一个圆圈加起来求平均”。这个圆圈上,不同位置贡献很不一样,可以分成两种地带:

整个证明收尾就靠一句话:主音 > 杂音

合格拼法的总数 $=$ 主项(一个确定的正数) $-$ 杂音(一个说不准的小量)

只要能证明杂音的总大小,比主项那个正数还小,那么

$$\text{合格拼法数}\ =\ \underbrace{(\text{正的主项})}_{\text{大}}\ -\ \underbrace{(\text{杂音})}_{\text{更小}}\ >\ 0.$$

大于 0,就意味着至少存在一种合格拼法——回到绝招一,问题就解决了!这套“化存在为计数、再用圆上主音压过杂音”的方法,就是大名鼎鼎的圆法(circle method),由哈代和李特尔伍德在一百年前发明,用来数各种“凑数”问题的解。

亮处 = 主音(主弧)· 暗处 = 杂音(次弧) 合格拼法数 = 主项(大·正) 杂音(更小) > 0 ⟹ 拼法一定存在 全部难度,都在证明“杂音真的比主项小”这一句上。
图 3 · 圆法的心脏:把计数摊到一个圆上,主音(亮)给出确定的正主项,杂音(暗)自相抵消。主音压过杂音,答案就落地。

5. 最难的一步(老实交代) where the real work is

三个绝招听起来顺理成章,但魔鬼藏在最后半句:怎么证明“杂音真的比主项小”?这正是整个证明最硬、最长、最“高深”的部分,也是为什么它需要两万多行推理。

直觉上是这样的:一种拼法如果“偏离目标”,它在圆上就落进杂音区;而偏得越厉害的拼法,它对应的一种“能量”就越高,指针衰减得越快、贡献越小。数学家要做的,是给所有这些偏离方案的能量算一个统一的下限——证明它们通通被压得足够低,加在一起也翻不起浪。这套记账法叫能量–熵方法(想象成:坏方案“数量上的多”始终赢不过它们“能量上的贵”)。其中一块最关键的拼图,作者起名 SBEE(单块能量–熵),已经被完整证明,而且用的是一个出人意料地初等的观察(“一列等差数刺进一段区间,至多扎中两个点”),并不需要更重的经典工具。

数论是从哪里进来的?
整个证明几乎是“纯组合 + 分析”的,数论只在最底层通过两条 1962 年的经典事实进入,都是关于素数分布的(素数在一段区间里有多密、以及 $\tfrac12+\tfrac13+\tfrac15+\dots$ 这类“素数倒数和”长多大)。它们由 Rosser 和 Schoenfeld 在 1962 年证明,本证明直接把它们当作已知事实引用。想深入,见公理详解页

6. 这一切都被计算机逐字检查过了 machine-verified

你可能担心:这么长的推理,会不会哪里藏了个漏洞?这正是这项工作最让人安心的地方——整个证明是用一种叫 Lean 的“证明检查器”写成的

Lean 不是让计算机去“猜”证明,而是逐行核对每一步逻辑是否严丝合缝:只要有一处推不通,它就会报错、拒绝通过。作者 Yuren Tang 写了约 21,000 行,Lean 全部检查通过,没有一处“此处略去证明”(术语叫 sorry-free)。换句话说,逻辑的正确性不需要你我去人肉信任,机器已经担保了。

于是,人类只需要相信两件小事
  1. 那条 Lean 定理的陈述,确实就是 Erdős 306 这道题(而不是一道被改写得更容易的题)。
  2. 被引用的两条 1962 年素数事实,确实忠实抄自 Rosser–Schoenfeld 的原文。

除此之外的每一步,都由 Lean 的内核把关。这两件事本站都做了逐条对照,见公理与诚实清单

7. 想看真刀真枪的版本 go deeper

如果上面的思路让你想看细节,技术版把每一层都摊开讲了(含公式、Lean 引理名、SVG 结构图):