欧几里得证明:素数有无穷多个

大约在公元前 300 年,欧几里得写下了一个短到只需一段话的论证,从此再未被超越,因为它根本无法被超越。命题是:素数无穷无尽。证明是一个构造:给我任意一份有限素数列表,我还你一个不在上面的素数。
两千年后,这个论证依然带着魔术般的质感。每一步都看得清清楚楚,知道结局在哪里,它依然能让你心头一震。
什么是素数,为何值得追问
素数是大于 1 的整数,它除了 1 和自身没有其他因数。最初几个是 2、3、5、7、11、13。它们嵌在整数里,像原子:所有其他整数都是把素数相乘造出来的。比如 30 分解为 2 乘 3 乘 5,而且基本只有这一种分解方式。
既然素数是所有整数的构件,自然会问:它们会用完吗?有没有一个最大的素数,越过它之后就再无更多?欧几里得的回答是否定的,他所走的路径优美到可以一口气读完。
设定:假设列表是完整的
这个论证是反证法,你先把对方想要的一切都给他。
假设只有有限多个素数
为了论证,假设所有素数的完整集合是一份有限列表:p1、p2、p3,一直到 pk,列表之外不存在任何素数。这就是我们要摧毁的假设。
现在,把所有素数集齐之后,用它们构造一个新数。
构造打破列表的数
将所有列出的素数相乘后加 1,得到 N
令 N = (p1 × p2 × p3 × ... × pk) + 1。也就是:把所谓完整列表上每一个素数的乘积,加上 1。
这是关键步骤,值得放慢来看清楚它做了什么。把所有列出的素数相乘,得到一个能被列表上每个素数整除的数。加上 1,则同时破坏了所有这些整除关系。
用 N 除以 p1,余数是 1,因为乘积 (p1 × p2 × ... × pk) 可以被 p1 整除,加上 1 把余数变成了 1。同样的逻辑适用于 p2、p3,以及列表上每一个素数。它们都不能整除 N。
矛盾
N 有素因子,但该因子不可能在列表上
每个大于 1 的整数至少有一个素因子,这是算术基本定理的推论:不断分解,直到无法继续,剩下的都是素数。所以 N 有素因子,记它为 q。
我们刚才证明了,列表上没有一个素数整除 N。因此 q 不在列表上。但我们假设列表包含了每一个素数,这就是矛盾:我们找到了一个不在所谓完整列表上的素数 q。
假设必然为假
由于「只有有限多个素数」这一假设直接导致了矛盾,假设为假。没有有限列表能包含所有素数,素数无穷无尽。
让证明更诚实的反例
很多关于欧几里得证明的通俗介绍在这里出了问题:它们声称 N 本身总是素数,事实并非如此,这个区别很重要。
取列表 「2, 3, 5, 7, 11, 13」。乘积是 2 × 3 × 5 × 7 × 11 × 13 = 30030,加 1 得到 N = 30031。
30031 是素数吗?不是。
30031 = 59 × 509。
59 和 509 都是素数,都不在列表 「2, 3, 5, 7, 11, 13」 中。这正是证明所预测的:不是 N 本身是素数,而是 N 的素因子不在列表里。在这个例子中,素因子是 59 和 509,两个被有限列表遗漏的素数。论证成立,但成立的依据来自因子,而非 N 本身。
证明实际说的是什么
值得停下来看清楚这个论证的形状,因为它异常干净。
你并没有明确构造出那个缺失的素数,也没有去搜寻它,而是证明了它必然存在:假设它不存在,就会走进逻辑的死胡同。藏在 N 的因子里的素数 q,可能很容易找到(就像尝试几个小因子就能发现 30031 = 59 × 509),也可能极其巨大。证明对此毫不在意,它的力量来自必然性:无论你交出什么列表,构造过程都能找到空缺。
这自然地连接到同一精神的其他证明:假设反面,看它崩塌。康托尔对角线论证在更大的尺度上使用了同样的结构:假设实数的完整列表存在,然后构造出一个可证明不在其中的实数。欧几里得的回声清晰可辨。
为什么素数永远不会彻底稀疏
这个证明没有告诉你素数之间的间距可以多大,也没有告诉你给定范围后下一个素数有多大。欧几里得的论证只保证存在性:在任何有限集合之外,还有另一个素数在等待。素数在数轴上的分布是一个困难得多的问题,至今仍是数学中最深刻的开放领域之一。
证明告诉你的是结构性的东西:素数无法被任何有限手段穷尽。你可以用一生来列举素数,始终是在列举一个无穷的剩余。你找到的每一个素数都是真实的,但你前方的那些同样真实、同样众多,同样无法被有限列表触及。
要感受用乘法和指数构建时数字能多快增长,直观理解指数一文是自然的伴侣:乘积 p1 × p2 × ... × pk 的增长速度可能超出你的预期,而这种增长正是 N 迅速变得巨大的原因之一。
禅意
欧几里得的证明已有两千多年历史,此后数学家们找到了数百个相同结论的证明。没有哪一个让这个证明过时,因为它留在这里靠的不是最聪明或最一般化,而是最透明。
你一遍就能看清整个论证。构造是自然的,矛盾是尖锐的,没有任何一步需要你靠信念接受,或相信某台复杂机器在按说明运转。
证明要你记住的是一个单一的念头:任何有限素数列表,都已经不完整。不是因为列表选得不好,而是素数本身是那种无法被任何有限数目所包容的东西。它们属于无穷,就像整数属于无穷,就像分数属于无穷,就像直线上的点属于无穷。证明不告诉你下一个素数在哪里,它告诉你:下一个素数总在那里。
这就够了,一直以来都够了。
要感受这种必然性精神中的其他结果,古德斯坦定理表明一个数列尽管增长到无法书写的高度,却总会归零,使用的正是同一种逻辑:「某件事必定发生,因为另一种情形是不可能的。」这个论证家族值得了解,每一个都是同一基础事实的不同角度:数学没有后门,结构永远成立。
常见问题
- 素数有无穷多个吗?
- 是的。欧几里得在公元前约 300 年就证明了这一点。无论你收集了多少素数放进列表,这个论证都能构造出一个数,其素因子全都在列表之外,因此至少存在一个新素数。
- 欧几里得的证明是否说明 N = (p1 × p2 × ... × pk) + 1 本身一定是素数?
- 不是,这是最常见的误述。N 只需要拥有一个不在列表中的素因子,这个因子可以是 N 本身,也可以是更小的数。例如 2×3×5×7×11×13 + 1 = 30031,而 30031 并不是素数:30031 = 59 × 509。59 和 509 都是素数,且都不在列表 「2,3,5,7,11,13」 中,证明因此依然完美成立。
- 欧几里得的论证属于哪种证明类型?
- 这是一个反证法(归谬法)。先假设命题的反面,即只存在有限多个素数,然后证明这个假设导致矛盾。
- 证明如何保证列表之外存在素数?
- 构造出的数 N 除以列表上任意素数余数均为 1,所以列表上没有一个素数整除 N。但每个大于 1 的整数至少有一个素因子,因此 N 有素因子,而那个因子不可能在列表上。一个列表之外的素数由此得到保证。
- 这与康托尔对角线论证或古德斯坦定理有关系吗?
- 三者同属一个结果家族:通过简单的构造,击败任何对「完整有限(或可数)描述」的尝试。欧几里得击败任意有限素数列表,康托尔击败任意可数实数列表,古德斯坦则产生了一个超出皮亚诺算术证明能力的数列。


