100个灯泡全按一遍,奇偶数问题【python】【面试】

100个灯泡全按一遍,奇偶数问题【python】【面试】

100个灯泡按1~100编号,1号同学将编号为1的倍数的灯泡全部摁了一遍(亮),2号同学将编号为2的倍数的灯泡全部摁了一遍(关),3号同学将编号为3的…,100号同学将编号为100的倍数摁了一遍,最后有__10__个灯泡是亮着的.

1)依题意,
灯泡按过的次数等于其编号的所有因数的个数;
(2)开始状态是熄的,后来是亮的,
说明按过的次数是奇数;
(3)所有因数的个数为奇数的自然数只有完全平方数。
1/4/9/16/25/36/49/64/81/100
1本身和平方数一共3个因数

综上,编号是完全平方数的灯泡最后是亮的。

python代码实现:
def LightCount(n):
count=[0 for x in range(0,n)]
for i in range(1,n):
    for j in range(1,i):
        if (i%j==0):
            count[i-1]=count[i-1]+1
#print count
    if (count[i-1]%2==0):
    print i
LightCount(101)
>>1 4 9 16 25 36 49 81 100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值