4074: 练5.3 开关房门

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:9 解决:4

题目描述

宾馆里有n(2≤n≤1000)个房间,从1∼n编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”…,以后每个服务员都是如此。当第n个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。)

输入

房间数n。

输出

一行,由小到大的打开门的房间序号,各序号之间用一个空格隔开。

样例输入 复制

100

样例输出 复制

1 4 9 16 25 36 49 64 81 100

提示

n=int(input())
#设置一个长度为n+1的列表,元素的初值是False
a=[False]*(n+1)
for i in range(1,n+1):
    for j in range(1,n+1):
        #j是i的倍数,那么第j号门被“相反出路”
        if j%i==0:
            #相反处理
            a[j]=not a[j]
for i in range(1,n+1):
    if a[i]:
        print(i,end=' ')