84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
现在有100个灯泡,每个灯泡都是关着的,第一趟把所有的灯泡灯泡打开,第二趟把偶数位的灯泡制反,第三趟让第3,6,9....的灯泡制反.......第100趟让第100个灯泡制反,问经过一百趟以后有多少灯泡亮着。
代码如何实现:
认证高级PHP讲师
補充一下 @hsfzxjy 所說的
燈泡只要有一個因數就會被開關一次
因為進行第 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))
但根據上面的結論, 你只要知道燈泡數內有幾個完全平方數就好了:
i = 1 while i**2 <= 100: i += 1 print(i-1)
我回答過的問題: Python-QA
所有完全平方数亮着
補充一下 @hsfzxjy 所說的
因為進行第
i
趟開關的時候, 會把i
的倍數的燈開關也就是說, 因數有
i
的燈泡在此趟會被開關從上面可以推出:
又可以歸納出:
如果你要完全模擬這個狀況的話, 這邊有 Python 的代碼:
但根據上面的結論, 你只要知道燈泡數內有幾個完全平方數就好了:
我回答過的問題: Python-QA
所有完全平方数亮着