只给你四个数字 2,不准引入任何其他数字,但允许随便调用数学运算,能不能拼出任意自然数?技术博主 Eli Bendersky 在 2025 年 2 月 22 日的文章里把这个经典谜题翻了出来,最终端出物理学家 Paul Dirac(保罗·狄拉克)的万能公式直接终结比赛。不过翻开底层史料和数学结构就会发现两件反常识的事。狄拉克的原始解法其实只用了三个 2,后世流传的第四个 2 纯属凑数补丁;而且他压根没在算术层面动脑筋,而是写了一套钻规则漏洞的符号编码器。
在狄拉克出手之前,这道题拼的是数学工具箱的厚度。造出小数字靠小学加减乘除就行,数字再大一点就得动用指数、阶乘,或者把两个 2 拼成 22。这里面最臭名昭著的拦路虎是数字 7,因为它离 2 的幂次和简单阶乘组合都太远。为了跨过 7,玩家们不得不搬出伽马函数、积分、复数,或者像 Mathematics Stack Exchange 社区那样,写出 $\log_{\sqrt{\sqrt{\sqrt{2}}}}(2) - 2/2 = 7$ 这种局部巧解(利用三次开方凑出 $2^{1/8}$ 做底数,对数值正好是 8,再减去 1)。
根号当绳结,对数做解码
局部巧解越是精妙,越显得狄拉克的通解不讲武德。原文抓取版丢失了全部公式,还原后的核心机制其实只有三步,全部建立在平方根与对数的逆运算上。
随便给一个目标自然数 $n$,狄拉克的做法是抓起一个数字 2,给它套上 $n$ 层平方根号。每套一层平方根,指数就乘上一次 $2^{-1}$,连续套 $n$ 层之后,算式的值就变成了 $2^{2^{-n}}$。接下来只需要把这个藏在指数第二层的 $n$ 剥出来,先取一次以 2 为底的对数,算式降维成 $2^{-n}$;再套一层以 2 为底的对数并加上负号,就能精准还原出目标自然数 $n$。
把这三步写成完整公式就是 $-\log_2(\log_2(\sqrt{\cdots\sqrt{2}})) = n$。数一下就会发现,根号里一个 2,两个对数底数各一个 2,总共只用掉三个 2。为了迎合题面必须用满四个 2 的硬规定,Bendersky 在博客里把最外层的底数 2 替换成了等价的 $\sqrt{2+2}$。这样一来,无论目标整数是 7 还是 10000,唯一的工作量就是低头画够对应数量的根号。
哥廷根口述史与三个凑数补丁
大众科普总喜欢把这件事渲染成狄拉克在 20 世纪 20 年代一招毁掉数学家消遣的传奇,但顺着文献往下挖,证据链其实是一条典型的学界口述史,而且正好能解释那个多出来的第四个 2。
Bendersky 的故事引自 Graham Farmelo 在 2009 年出版的狄拉克传记《The Strangest Man》第 14 章。传记明确记载,四个 2 的游戏是在 1929 年被引入德国哥廷根学派的,但书中并没有给出狄拉克想出通解的确切日期。更关键的是,Farmelo 在章节注释里交代了这段轶事的真正源头,它并非来自狄拉克的同期论文,而是出自物理学家 Hendrik B. G. Casimir 在 1984 年出版的回忆录《Haphazard Reality: Half a Century of Science》第 74 至 75 页。
而在 Casimir 的原始回忆录里,狄拉克当年解出这道题,本来就只用了三个 2。
因为核心数学结构天然只需要三个 2,后世的传播者在把它塞进四个 2 的题框时,各自打上了完全不同的补丁。
| 版本来源与时间 | 第四个 2 的配平写法 | 改动位置 |
|---|---|---|
| Casimir 回忆录 (1984) | 无补丁,原版仅用 3 个 2 | 原始双对数结构 |
| Farmelo 传记注释 (2009) | 显式写出根号省略的根指数 $\sqrt[2]{\quad}$ | 嵌套平方根内部 |
| Bendersky 博客 (2025.02) | 底数 2 替换为 $\sqrt{2+2}$ | 外层对数底数 |
| Math.SE 用户 mathon (2025.03) | 底数 2 替换为 $\sqrt{2 \cdot 2}$ | 外层对数底数 |
三种补丁各改各的,反而证明了一件事,第四个 2 在这套通解里毫无数学功能,纯粹是为了应付题面审查而加上的修辞。
算术巧思是怎么败给符号编码的
为什么很多人第一眼看到狄拉克的公式,直觉上会觉得他在作弊,但对照规则又挑不出毛病?
我更在意的不是这道题怎么解,而是它暴露出的形式系统漏洞。表面上看,平方根符号 $\sqrt{\quad}$ 在现代数学记法里默认省略了左上角的根指数 2,画 $n$ 个根号,其实已经在运算层面隐式调用了 $n$ 次以 2 为底的开方,Farmelo 传记里直接标出根指数 2 的补丁,恰恰把这层窗户纸捅破了。
但更深层的降维打击在于,狄拉克用物理空间的重复次数替代了数值构造。
狄拉克没有去凑数字,他只是用根号发明了一套结绳计数法。
在计算理论与皮亚诺公理(Peano axioms)的视角下,任何一个自然数 $n$ 都可以通过对基准元素连续施加 $n$ 次后继算子来定义。算术谜题之所以烧脑,是因为它封死了直接写数字的通道,逼迫玩家在有限的算式长度内寻找数值巧合。而狄拉克敏锐地抓住了规则里的免死金牌,题面只限制了数字 2 的出现次数,却没有限制一元算子(平方根)的嵌套深度。
只要一个一元算子不带显式数字、能改变数值、且有对应的逆运算(对数)能把嵌套层数提取出来,玩家就可以靠无上限地叠加这个算子,把目标数字 $n$ 硬生生编码进语法树的深度里。对比一下前面提到的局部巧解就很清楚,同样是用对数和根号凑 7,$\log_{\sqrt{\sqrt{\sqrt{2}}}}(2) - 2/2 = 7$ 只用了 3 个根号就跳到了 8,靠的是指数运算的倍率放大;而狄拉克的通解要凑出 7,必须老老实实画满 7 个根号。
《韩非子》里讲,夫匠者,手巧也;而法者,官之规矩绳墨也。当哥廷根的数学家们都在比拼手巧时,物理学家直接修改了绳墨的用法。
这也给所有规则设计者留下一条硬教训。不光是在数学谜题里,包括今天的编程竞赛(Code Golf)、基准测试(Benchmark)甚至博弈机制设计,只要你不给算子完备性和语法树嵌套深度加上硬上限,参与者就一定能找到绕过核心难题的编码旁路。
- 结论.当存在性问题被狄拉克式的万能公式彻底抹平后,这类数字游戏唯一剩下的智力竞技场,就是限制运算符号总成本的最短表达式问题(Golfing)——毕竟用 7 个根号画出 7 只是体力活,禁用无限嵌套、用最少的符号拼出大整数,才算回到真正的数学。
