100个房间 每个房间 1 盏灯 这些灯都是灭的
// 1 2 3 4 5 6 7 8 9
100个人coming
第1个人 来到每个房间前
如果房间编号能够整除1 (人的编号)
拉一下灯
第2个人 来到每个房间前
如果房间编号能够整除2 (人的编号)
拉一下灯
第3个人 来到每个房间前
如果房间编号能够整除3 (人的编号)
拉一下灯
。。。
问:当 100 个人都拉完灯之后 哪些灯是亮的
答:1 4 9 16 25 36 49 64 81 100
第一种:房间不动 人进行动态,但是只有小于等于房间编号的人才有机会被整除.
例如房间 32号 人33号,那么32号以后的人就无法被整除直接简化 j<=i
public class Test01{
public static void main(String[] args){
boolean flag;//灭的
int i=1;
for(i=1;i<=100;i++){//一百个房间
flag=false;
for(int j=1;j<=i;j++){//小于等于i的人才能有机会整除
if(i%j==0){
flag=!flag;
}
}
if(flag){
System.out.println(i);
}
}
}
}
第二种:
public class Test02{
public static void main(String[] args){
// false
boolean[] data = new boolean[100];
// 人-外层
for(int ren = 1; ren <= 100; ren++){
// 人的编号是定的
for(int room = 1; room <= 100; room++){
// 人-1 房间-room=1
// 如果 room 能够整除ren
if(room%ren == 0){
// 人进房间 拉data[room-1]灯
data[room-1] = !data[room-1];
}
}
}
// 编号 = index+1
for(int index = 0; index < data.length; index++){
if(data[index]){// true
System.out.println(index+1);
}
}
}
}
标签:java,简单,亮灯,房间,public,boolean,编号,100,整除 From: https://blog.csdn.net/Miserables_/article/details/142928474