💡 点击全屏打开 关灯游戏动态交互演示
趣味杂题 · 数论 · 算法逻辑
百灯翻转挑战:寻找隐藏的完全平方数
1. 什么是“百灯翻转问题”?
“百灯翻转问题”(100盏灯问题)是一个经典的数学与算法逻辑谜题。它不仅考验个人的逻辑推理能力,还巧妙地将生活中的物理现象(开关灯)与抽象的数学概念(因数与完全平方数)完美结合在一起。
2. 问题描述:100 轮的规则
想象一下,在一个长长的走廊里有 100 盏灯,它们从 1 到 100 依次编号。最初,所有的灯都是关闭的。接下来,我们要进行 100 轮操作:
- 第 1 轮: 你走过走廊,把所有 $1$ 的倍数的灯(即所有的灯)都按一次开关。此时,所有的灯都亮了。
- 第 2 轮: 你再次走过走廊,把所有 $2$ 的倍数的灯(2, 4, 6, 8...)的开关都按一次。由于它们原本是亮的,现在都被关掉了。
- 第 3 轮: 把所有 $3$ 的倍数的灯(3, 6, 9, 12...)的开关都按一次。如果本来是亮的就关掉,本来是暗的就打开。
- ...依此类推...
- 第 100 轮: 你只按下 $100$ 的倍数(也就是第 100 盏灯)的开关。
问题是:经过这整整 100 轮操作后,最后哪些灯是亮着的?
3. 数学奥秘:因数与奇偶性
这个问题的核心在于分析每一盏灯被按开关的次数。
- 一盏灯的初始状态是“关”。
- 如果它被按了奇数次,它最终就是亮的(关 → 亮 → 关 → 亮)。
- 如果它被按了偶数次,它最终就是关的(关 → 亮 → 关)。
那么,第 $i$ 盏灯会被按多少次呢?它只会在那些轮数是其因数的回合中被按到。例如,第 12 盏灯:
$$12 = 1 \times 12 = 2 \times 6 = 3 \times 4$$
它的因数有 1, 2, 3, 4, 6, 12。因此它会在第 1, 2, 3, 4, 6, 12 轮被按到,总共 6 次(偶数次),所以最后它是关着的。
| 灯泡编号 ($i$) |
包含的因数 |
被按次数 |
最终状态 |
| 2 |
1, 2 |
2次 (偶数) |
关 |
| 12 |
1, 2, 3, 4, 6, 12 |
6次 (偶数) |
关 |
| 16 |
1, 2, 4, 8, 16 |
5次 (奇数) |
亮 |
4. 破局关键:完全平方数的特殊性
绝大多数数字的因数都是成对出现的。因此,大多数灯都会被按偶数次。
那么,什么样的数字会有奇数个因数呢?答案是完全平方数。
例如,数字 16,它的因数有 1, 2, 4, 8, 16。注意这里的因数 4:
$$4 \times 4 = 16$$
这个因数 4 在这里没有成对的不同数字与之对应(它是自己乘自己),所以 16 共有 5 个因数(奇数个)。
5. 最终答案
经过 100 轮翻转后,最后亮着的灯,它们的编号一定是完全平方数。在 1 到 100 之间,完全平方数有:
$$1, 4, 9, 16, 25, 36, 49, 64, 81, 100$$
结论:总共只有这 10 盏灯是亮着的。这个经典谜题用一种非常直观的方式,展示了数论中关于因数奇偶性的规律。