数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 131|回复: 0

有趣的数学问题 —— 百人百灯问题

[复制链接]
发表于 2025-4-13 01:11 | 显示全部楼层 |阅读模式
有趣的数学问题 —— 百人百灯问题

原创  小猿科普 小猿科普  2025 年 03 月 09 日 08:30  北京

房间里有一百个灯,编号 1~100 ,默认是关的。房间外有一百个人,编号 1~100 。房间外 100 个人依次进入房间,将编号是自己编号倍数的灯拉一下,比如,如果是编号为 1 的人,进入房间将所有的灯都拉一下,编号是 2 的人进入房间,将 2,4,6,8... 的灯拉一下。问,100 个人过后,房间内还有哪些灯是亮的? 灯默认是关的,拉一下开关,点亮,再拉一下开关,关闭,依次类推。

这个问题正向思考起来确实比较复杂。有 100 个人,每个人都要走进屋子按一遍开关,然后再来统计哪些灯最终是点亮的,哪些灯最终是熄灭的……,这确实是一个浩大的工程。

有没有一个巧妙的方法来解决这个问题呢?其实正向思考过于复杂,我们就不妨来逆向思考一下这个问题。

首先我们来考虑一下要怎样才能使这盏灯最终被点亮呢?这一点并不难想象:只要这盏灯的开关被人拉了奇数下,比如拉了 3 下,这盏灯最后肯定是亮的。



现在这个问题就转化为:经历了这 100 人的“开开关关”后,有哪些灯的开关被拉了奇数次呢?这似乎也是一个比较复杂的问题,有什么思路来解决这个问题呢?

我们发现,问题中还有一个已知条件没有用到:100 个人依次进入房间,将编号是自己编号倍数的灯拉一下。这似乎可以给我们一些启发。

假如这个人是 5 号,那么他就会去拉动编号为 5 的倍数的灯的开关,即 5,10,15,20,……95,100 。



假如这个人是 10 号,那么他就会去拉动编号为 10 的倍数的灯的开关,即 10,20,30……90,100 。



不难发现,对于 20 号灯来说,编号为 5 的人和编号为 10 的人都会去拉一次它的开关。那么还有谁去拉动 20 号灯的开关呢?



显然只要编号为 20 的因数的人,都会去拉动它的开关,即 1,2,4,5,10,20 。其他人都不会拉动它的开关。这样算来 20 号灯的开关最终 6 个人会拉动,所以 20 号灯最终一定是熄灭的。

能想到这一点,本题就有了基本思路:我们只需找出 1~100 中,有哪些编号有奇数个因数,那么这些编号对应的灯的开关就会被拉动奇数次,最终这些灯就是点亮的。

如果你使用穷举法,逐一计算 1~100 每个数的因数的个数,你会得到这个答案:1,4,9,16,25,36,49,64,81,100 。这 10 个数每个数都有奇数个因数。

但是如果你掌握了其中的规律,得到这个答案并不需要这么麻烦。

对于一个整数,它的因数一定都小于该数本身,并且这些因数一定可以分成若干对,使得每对因数相乘都等于该数本身。举例说明:



所以一般来说一个整数的因数个数都是偶数个。

但是也存在例外,例如 36 ,它的因数包括 1,2,3,6,12,18,36 ,可以看到它的因数中除了可分成对的(1,36)、(2,18)、(3,12) 之外,还有一个孤立的 6 ,而 6×6(自身相乘)也得 36 ,而这些数都有奇数个因数。

所以 1~100 中包含奇数个因数的数都是那些完全平方数,即 1,4,9,16,25,36,49,64,81,100 。

所以最终 1,4,9,16,25,36,49,64,81,100 编号的灯是点亮的。

小猿科普

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-4-30 16:48 , Processed in 0.083456 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表