/*实现Switch Game 关键算法并绘制流程图(30分) 有 n盏灯,编号 1~n(0<n<100)。第1 个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为 3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依次类推。输入灯数和人数,输出开着的灯的编号。 比如输入:10 2 输出最后亮灯的编号:1,3,5,7,9 注意:使用循环语句实现。 */package Nianxi;import java.util.Scanner;public class Ti_2 { public static void main(String[] args) { Scanner input=new Scanner(System.in); int d=input.nextInt(); int r=input.nextInt(); int j=2; int num[]=new int[100]; for(int i=1;i<=d;i++){ num[i]=i; } while (j<=r) { for(int i=j;i<=d;i++){ if(i%j==0){ if(num[i]!=0){ num[i]=0; }else{ num[i]=i; } } } j++; } for (int i=1;i<=d;i++){ if (num[i]!=0){ System.out.print(num[i]+","); } } }}
1 回答
已采纳
EnchantF
TA贡献19条经验 获得超4个赞
while (j<=r) {
for(int i=j;i<=d;i++){
if(i%j==0){
if(num[i]!=0){
num[i]=0;
}else{
num[i]=i;
}
}
}
j++;
}
while :对人进行遍历,默认人数>=2
for:对灯进行遍历
如果灯编号是人的倍数,再判断灯目前是不是关闭的(元素为0),如果是关的,则打开;反之,则关闭
添加回答
举报
0/150
提交
取消