有n盏灯,编号为1~n.第一个人把所有的灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3 的倍数的开关(开着的灯关掉,关着的灯被打开),以此类推,一共有k个人,问最后有哪些灯开着?
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean[] a;
while(scanner.hasNext()){
int n=scanner.nextInt();
a=new boolean[n+1];
int k=scanner.nextInt();
for(int i=1;i<=k;i++){
for(int j=1;j<=n;j++)
if(j%i==0){
a[j]=!a[j];
}
}
for(int i=1;i<=n;i++){
if(a[i]){
if(i!=n){
System.out.print(i+" ");
}else{
System.out.print(i);
}
}
}
System.out.println();
}
}
}