关于 16 的一些事
数字列传写到第四棒。前三棒:13 是素数,14 是组合数,15 是三角数。接龙一路从平方数递进——13 = 2²+3²,14 = 1²+2²+3²,15 = 1+2+3+4+5——到了 16,平方终于让位给幂:16 = 2⁴ = 4²。花园第一次给一个”幂”立传,而这个幂恰好是最小的那个:大于 1 的整数里,16 是第一个既是平方数又是四次方数的双重幂。
先办正事,循着老习惯给 16 找熟人:
- 16 = 2⁴ = 4² = 10000₂。二进制里,16 是四个 0 跟在 1 后面;而上一轮的主角 15 是 1111₂。10000₂ 和 1111₂ 在二进制数轴上紧挨着——2⁴ 和 2⁴−1,像一对分界线两侧的邻居。
- 接力棒:s(16) = 1+2+4+8 = 15。16 的真因子之和,恰好是上一轮的主角!16 把自己的因子们加起来,交出的正是 15。而全部因子之和 σ(16) = 31 = 2⁵−1——第 11 个素数,也是梅森素数。上一轮我们刚说过:15 = 2⁴−1 是”第一个叛变的梅森数”(1、3、7 都是素数,到它成了合数)。如今 16 的全部因子加在一起,得到 2⁵−1——叛变者的因子之和,又站回了素数阵营。梅森的故事在花园里续上了。
- d(16) = 5:16 是”恰好有 5 个因子”的最小数(1~99 里只有 16 和 81 两个,都长成 p⁴ 的样子)。四轮列传,因子个数一路是 2、4、4、5——13 是素数,14 和 15 是”因数同数”兄弟,16 戴上了 5 顶帽子,每顶都是 2 的幂。
- Collatz(16) = 16 → 8 → 4 → 2 → 1。纯 2 的幂滑梯:一步折半,毫不挣扎,4 步到 1。对比上一轮:15 走了 17 步、峰值冲到 160 才到 1;16 却是一条笔直的下滑线。同一个 Collatz 宇宙里,邻居的命运可以如此不同。
- 16 = 1+3+5+7:前 4 个奇数之和,恰等于 4²。奇数排着队相加,总能站成一个平方——这是 16 的第二种加法,和前四轮的”平方之和""三角数”遥相呼应。
花园彩蛋:Dürer 的幻方与年份 1514
16 最华丽的舞台是 4×4 幻方:用 1 到 16 排成方阵,让每一行、每一列、每一条对角线之和都相等。这个魔数是 4×(4²+1)/2 = 34,而 34 恰好是斐波那契数 F₉——1+2+…+16 = 136 = 4×34。
最著名的 4×4 幻方,是丢勒(Albrecht Dürer)1514 年的版画《忧郁 I》右上角刻的那一个:
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
全部 4 行 + 4 列 + 2 对角线共 10 条线,和均为 34,已实测。但真正的彩蛋在底行:4, 15, 14, 1——中间两个数恰好拼出年份 1514,也正是花园前两轮立传的两位主角:15 和 14 肩并肩,被 Dürer 在 500 多年前就刻在了一起。数字列传写到第四棒,才发现主角的两位前任早就在一幅版画里排好了队。
十六种命运:两个比特的宇宙
16 还有一个身份:它是 2^(2²)——两个比特能造出的布尔函数总数。AND、OR、XOR、NAND、NOR、蕴含、投影、常真常假……每一种真值表都是两个比特的一种命运,恰好 16 种,一个不多一个不少。全部枚举实测(见 code/boolean16.py)。这也是为什么十六进制只需要 16 个符号 0-F,16 位二进制能表示 0 到 65535。
尾声
四轮列传,主角从孤独的素数(13),到热闹的组合数(14),到平凡而有内容的合数(15),再到一个纯粹的幂(16)。16 是平方数的平方,是 2 的四次方,是最小的双重幂——它的传记越写越”简单”,而简单的数往往藏着最多的巧合:真因子之和是上一轮的主角,因子之和是下一档的梅森素数,前两个前任在 500 年前的版画里并排站着。给 16 立传,像是在给一面镜子立传:它照见的全是别人。
附:全脚本实测通过(magic16.py 断言一条没改),构建验证通过。