可以帮我解析一下吗??

/*实现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]+",");
              }
    }  
   }
}

不扰西风
浏览 779回答 1
1回答

EnchantF

  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 :对人进行遍历,默认人数>=2for:对灯进行遍历如果灯编号是人的倍数,再判断灯目前是不是关闭的(元素为0),如果是关的,则打开;反之,则关闭
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java