代码实现逻辑

现在有100个灯泡,每个灯泡都是关着的,第一趟把所有的灯泡灯泡打开,第二趟把偶数位的灯泡制反,第三趟让第3,6,9....的灯泡制反.......第100趟让第100个灯泡制反,问经过一百趟以后有多少灯泡亮着。

代码如何实现:


蝴蝶不菲
浏览 543回答 2
2回答

翻过高山走不出你

燈泡只要有一個因數就會被開關一次因為進行第 i 趟開關的時候, 會把 i 的倍數的燈開關也就是說, 因數有 i 的燈泡在此趟會被開關從上面可以推出:燈泡有奇數個因數最後的結果會是亮著的 (開關奇數次, 會是亮的)又可以歸納出:完全平方數的燈泡會亮著 (因為只有完全平方數有奇數個相異因數, 其他都會有兩兩成對的相異因數)如果你要完全模擬這個狀況的話, 這邊有 Python 的代碼:lamps = [ False for i in range(100) ]# print('starts', lamps)for i in range(1, len(lamps)+1):&nbsp; &nbsp; for idx, lamp in enumerate(lamps):&nbsp; &nbsp; &nbsp; &nbsp; if (idx + 1) % i == 0:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lamps[idx] = not lamp&nbsp; &nbsp; # print(i, lamps)print(lamps.count(True))但根據上面的結論, 你只要知道燈泡數內有幾個完全平方數就好了:i = 1while i**2 <= 100:&nbsp; &nbsp; i += 1print(i-1)我回答過的問題:&nbsp;Python-QA

三国纷争

所有完全平方数亮着
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java