100盏灯的问题

有100盏灯,从1~100编上号,开始时所有的灯都是关着的,第一次,把所有编号是1的倍数的灯的开关状态改变一次;第二次,把所有编号是2的倍数的灯的开关状态改变一次;第三次,把所有编号是3的倍数的灯的开关状态改变一次;以此类推,直到把所有编号是100得倍数的灯的开关状态改变一次。问,此时所有开着的灯的编号

package com.yenange.t2;

public class Light { 
    public static void main(String[] args) { 
//        有100盏灯,从1~100编上号,开始时所有的灯都是关着的, 
//        第一次,把所有编号是1的倍数的灯的开关状态改变一次; 
//        第二次,把所有编号是2的倍数的灯的开关状态改变一次; 
//        第三次,把所有编号是3的倍数的灯的开关状态改变一次; 
//        以此类推,直到把所有编号是100得倍数的灯的开关状态改变一次。问,此时所有开着的灯的编号。 
        int[] arr=new int[101]; 
        for (int i = 1; i < arr.length; i++) { 
            arr[i]=0;    //关闭所有的灯 
        } 
        for (int i = 1; i < arr.length; i++) { 
            for (int j = 1; j < arr.length; j++) { 
                if (j%i==0) { 
                    arr[j]=arr[j]==0?1:0; 
                } 
            } 
        } 
        for (int i = 1; i < arr.length; i++) { 
            if (arr[i]==1) { 
                System.out.print(i+"/t"); 
            } 
        } 
    }

}

10盏是亮的,分别是1 4 9 16 25 36 49 64 81 100;90盏是灭的。
这是因为除了这些平方数以外,其余的任意一个数都能分成不同的两数乘积,质数可以分为1和本身,
合数都可以分成若干组乘积(每组两个),因此,这些等都被拉了偶数倍,也就是灭的,平方数因为在被自己的开方数拉是只有一次,
所以是奇数次,也就是亮的。随便举两个例子以证明。36分别被1、2、3、4、6、9、12、18、36拉过,共是9次,亮。
38分别被1、2、19、38拉过,共是4次,灭。所以10盏是亮的;90盏是灭的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值