84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
现在有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
所有完全平方数亮着