输入一个正整数X。现有X盏灯(熄灭),有X个人。让第一个人把所有1的倍数的灯改变状态(把开的关掉、把关的打开),让第二个人把所有2的倍数的灯改变状态,以此类推,直到第X个人操作完毕。输出亮着的灯的编号,用空格隔开。
输入
一个正整数X
输出
所所有亮着的灯的编号,用空格隔开
输入一个正整数X。现有X盏灯(熄灭),有X个人。让第一个人把所有1的倍数的灯改变状态(把开的关掉、把关的打开),让第二个人把所有2的倍数的灯改变状态,以此类推,直到第X个人操作完毕。输出亮着的灯的编号,用空格隔开。
输入
一个正整数X
输出
所所有亮着的灯的编号,用空格隔开
效果图如下:
# 打开灯,关闭灯,最后还亮着哪些灯
# 输入一个正整数X。现有X盏灯(熄灭),有X个人。让第一个人把所有1的倍数的灯改变状态(把开的关掉、把关的打开),让第二个人把所有2的倍数的灯改变状态,以此类推,直到第X个人操作完毕。输出亮着的灯的编号,用空格隔开。
# 输入
# 一个正整数X
# 输出
# 所所有亮着的灯的编号,用空格隔开
import numpy as np
x = eval(input())
light = np.zeros(x) > 0
# 初始化人,及灯的状态均为关闭
print(x)
print(light)
# 遍历人
for i in np.arange(x + 1):
if (i == 0): continue
light = [not on if ((light_index + 1) % i == 0) else on for light_index, on in enumerate(light)]
print(str(i), light)
print('开着的灯的编号有:')
for i, flag in enumerate(light):
if (flag):
print(i + 1, end=" ")