有1到100号的灯,一开始全部点亮。每盏灯都有独立的开关,且开关只有“开”和“关”两种状态。
第一次把所有1的倍数灯的开关按一次,第二次把所有2的倍数灯的开关按一下,一直到第一百次把所有100的倍数灯的开关按一下。
问,此时还有多少灯灭着?
一、Java编程解决
package test;import java.util.ArrayList;
import java.util.List;public class lamp1_100 {public static void main(String[] args){int count=0;List<Integer> dd = new ArrayList<Integer>();
// 默认所有的灯开着for(int i=0;i<100;i++){dd.add(1);}
// 操作所有的灯for(int k=1;k<=100;k++){//对k的倍数的灯进行操作如果是关设置成开 如果是开设置成关for(int t=1;t<=100/k;t++){if(dd.get((k*t)-1)==0){dd.set((k*t)-1,1);}else{dd.set((k*t)-1,0);}}}
// 计算灭灯的灯的个数for(int i=0;i<100;i++){if(dd.get(i)==0){count++;System.out.println("剩余灭的灯的索引:"+ i);}}System.out.println("剩余灭的灯的个数:"+count);}}