7.7  如何判断有几盏灯泡还亮着

7.7 如何判断有几盏灯泡还亮着

【出自HW面试题】

难度系数:★★★★☆ 被考察系数:★★★★☆

题目描述:

100个灯泡排成一排,第一轮将所有灯泡打开;第二轮每隔一个灯泡关掉一个,即排在偶数的灯泡被关掉;第三轮每隔两个灯泡,将开着的灯泡关掉,关掉的灯泡打开。依次类推,第100轮结束的时候,有几盏灯泡还亮着?

分析与解答:

(1)对于每盏灯,当拉动的次数是奇数时,灯就是亮着的,当拉动的次数是偶数时,灯就是关着的。

(2)每盏灯拉动的次数与它的编号所含约数的个数有关,它的编号有几个约数,这盏灯就被拉动几次。

(3)1~100这100个数中有哪几个数,约数的个数是奇数?

我们知道,一个数的约数都是成对出现的,只有完全平方数约数的个数才是奇数个。

所以,这100盏灯中有10盏灯是亮着的,它们的编号分别是:1、4、9、16、25、36、49、64、81和100。

下面是程序的实现:

978-7-111-61212-4-Part02-369.jpg

978-7-111-61212-4-Part02-370.jpg

程序的运行结果如下:

亮着的灯的编号是:1

亮着的灯的编号是:4

亮着的灯的编号是:9

亮着的灯的编号是:16

亮着的灯的编号是:25

亮着的灯的编号是:36

亮着的灯的编号是:49

亮着的灯的编号是:64

亮着的灯的编号是:81

亮着的灯的编号是:100

最后总共有10盏灯亮着。