So here's the question:
(Game: locker puzzle) A school has 100 lockers and 100 students. All lockers are
closed on the first day of school. As the students enter, the first student, denoted
S1, opens every locker. Then the second student, S2, begins with the second
locker, denoted L2, and closes every other locker. Student S3 begins with the
third locker and changes every third locker (closes it if it was open, and opens it if
it was closed). Student S4 begins with locker L4 and changes every fourth locker.
Student S5 starts with L5 and changes every fifth locker, and so on, until student
S100 changes L100.
After all the students have passed through the building and changed the lockers,
which lockers are open? Write a program to find your answer and display all
open locker numbers separated by exactly one space.
(Hint: Use an array of 100 Boolean elements, each of which indicates whether a
locker is open (true) or closed (false). Initially, all lockers are closed.)
And my logic did this:
public class Exercise_7_23 { public static void main(String[] args) { boolean[] lock = new boolean[100]; for(int i = 0; i < lock.length; i++) { //Initializing all array values with false lock[i] = false; } for(int i = 0; i < 100; i++) { //Students for(int j = 0; j < 100; j += i) { //Lockers if(lock[j] == true) { //If open lock[j] = false; //close } else { lock[j] = true; //open } } } System.out.println("The lockers open are"); for(int i = 0; i < lock.length; i++) { //Printing array number if locker is open. if(lock[i] == true) { System.out.print((i+1) + " "); } } } }
but after running it, it doesn't load, just frozen.
I'd assume from the loop but it isn't that bad ? i think.
--- Update ---
I refuse to look at the answer and i'd just appreciate some hints.