因为进行第 i 趟开关的时候, 会把 i 的倍数的灯开关i 趟開關的時候, 會把 i 的倍數的燈開關
也就是說, 因數有 i
也就是说, 因数有 i 的灯泡在此趟会被开关
从上面可以推出:
燈泡有奇數個因數最後的結果會是亮著的 (開關奇數次, 會是亮的)
又可以归纳出:
完全平方數的燈泡會亮著 (因為只有完全平方數有奇數個相異因數, 其他都會有兩兩成對的相異因數)
如果你要完全模拟这个状况的话, 这边有 Python 的代码:
lamps = [ False for i in range(100) ]
# print('starts', lamps)
for i in range(1, len(lamps)+1):
for idx, lamp in enumerate(lamps):
if (idx + 1) % i == 0:
lamps[idx] = not lamp
# print(i, lamps)
print(lamps.count(True))
补充一下 @hsfzxjy 所说的
因为进行第
i
趟开关的时候, 会把i
的倍数的灯开关i
趟開關的時候, 會把i
的倍數的燈開關也就是說, 因數有
i
i
的灯泡在此趟会被开关但根据上面的结论, 你只要知道灯泡数内有几个完全平方数就好了:
🎜我回答过的问题🎜: Python-QA🎜所有完全平方数亮着