百盏灯

100 盏关着的灯,第 1 个人切换所有灯,第 2 个人切换 2 的倍数,第 3 个人切换 3 的倍数……第 100 个人切换第 100 盏。最后哪些灯亮着?答案是完全平方数。

分类
经典谜题
难度
入门
标签
因数、完全平方数、整除
百盏灯 · 漫画配图
漫画 · 百盏灯

题目

走廊上有 100 盏灯,初始全关。100 个人依次走过:

  • 第 1 个人切换每盏灯(开→关、关→开,即全打开);
  • 第 2 个人切换所有 2 的倍数的灯;
  • 第 3 个人切换所有 3 的倍数的灯;
  • ……
  • kk 个人切换所有 kk 的倍数的灯;
  • 第 100 个人只切换第 100 盏。

“切换”即按一下开关:关变开、开变关。100 人走完后,哪些灯是亮着的?

答案与解析

nn 盏灯被切换的次数,等于 nn 的正因数个数(因为第 kk 个人只动 kk 的倍数灯)。

  • 被切换偶数次 → 回到关;
  • 被切换奇数次 → 最终亮着。

所以问题变成:哪些数的正因数个数是奇数?

一般的数,因数都是成对出现的:若 dd 整除 nn,则 n/dn/d 也整除 nn。只有当中出现 d=n/dd = n/d,即 n=d2n = d^2 时,这对因数重合为同一个,因数总数才变成奇数。

因此,因数个数为奇数的,恰是完全平方数1,4,9,16,25,36,49,64,81,1001,4,9,16,25,36,49,64,81,100

结论:最后亮着的,正是这 10 盏编号为完全平方数的灯。

背后的数学

这是一个把“开关状态”翻译成“整除性质”的漂亮转换。核心观察是:只有平方数有奇数个因数

它常作为数论入门题,训练人把“操作次数”与“数的结构”对应起来。顺着它能引出更多:因数个数函数 d(n)d(n)、完全平方数的分布、乃至“约数和”函数。小小的 100 盏灯,照见的是整数因分解的对称性。