Maison > Questions et réponses > le corps du texte
现在有100个灯泡,每个灯泡都是关着的,第一趟把所有的灯泡灯泡打开,第二趟把偶数位的灯泡制反,第三趟让第3,6,9....的灯泡制反.......第100趟让第100个灯泡制反,问经过一百趟以后有多少灯泡亮着。
代码如何实现:
伊谢尔伦2017-04-18 09:15:49
En plus de ce que @hsfzxjy a dit
燈泡只要有一個因數就會被開關一次
Parce que lorsque le commutateur i
est effectué, des multiples de i
lumières seront commutées
En d'autres termes, l'ampoule avec facteur i
sera allumée et éteinte lors de ce voyage
On peut déduire de ce qui précède :
燈泡有奇數個因數最後的結果會是亮著的 (開關奇數次, 會是亮的)
peut se résumer ainsi :
完全平方數的燈泡會亮著 (因為只有完全平方數有奇數個相異因數, 其他都會有兩兩成對的相異因數)
Si vous souhaitez simuler complètement cette situation, voici le code 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))
Mais sur la base de la conclusion ci-dessus, il vous suffit de savoir combien de nombres carrés parfaits il y a dans le nombre d'ampoules :
i = 1
while i**2 <= 100:
i += 1
print(i-1)
Questions auxquelles j'ai répondu : Python-QA