问题是这样的:
一条走廊上有n 个带锁的门编号1、2、3、……、n依次排列,门的初始状态都是关着的。
每一次都从1号门开始依次经过所有门,在第k次经过所有门时改变编号是k的整数倍的门的状态(即若门关着,就打开它,门开着,就关闭它),例如进行第一次时因为所有数都是1的倍数,所以会打开所有的门(注意所有门初始状态是关着的),进行第二次时改变所有编号是2的倍数的门的状态,进行第三次时改变所有编号是3的倍数的状态……,我们总共经过n次后停止。
问题:在最后一次经过所有门后,哪些门是打开的?
/**
* 带锁的门
* 0表示关,1表示开
*/
public class Men {
public void kaiMen(int[] men, int len) {
for (int i = 1; i != len+1; i++) {
for (int j = 1; j !=len+1 ; j++) {
if ((j%i) == 0) {
if (men[j] ==0){
men[j] = 1;
} else {
men[j] = 0;
}
}
}
}
for (int i = 0; i < len; i++) {
if (men[i] ==1) {
System.out.println(i + " 号门是开着的");
}
}
}
}