/ / Simple Loop query - slučky

Jednoduchý dopyt Loop - slučky

Môj mozog zrejme nie je na všetky valceale pracoval som na programe, ktorý zistil, či je číslo prime number. Cyklus nižšie funguje, ale nerozumiem prečo Ak prvočíslo (test [k]) je 5 a i = 3, prečo smyčka pokračuje, ak 3 * 3 je> 5?

        int [] test = new int[] {15,14,2,3,19,70,7,9,11,12,13,14,21,23,0,107};
int test2 = 7;


for(int k= 0; k <test.length; k++)
{
boolean IsPrime= true;
if(test[k]==2)
{
System.out.println(test[k] + " is a prime number");
IsPrime = true;
continue;
}

else if (test[k] % 2 == 0)
{
IsPrime = false;
System.out.println(test[k] + " is NOT a prime number");
continue;
}

else
{
for(int i = 3; i * i <= test[k]; i+= 2)
{
System.out.println(i);
if(test[k] % i == 0)
{
IsPrime =false;
}
}
if(IsPrime == true)
System.out.println(test[k] + " is a prime number");

else
{
System.out.println(test[k] + " is NOT a prime number");
}
}
}

}

odpovede:

3 pre odpoveď č. 1

Slučka nebude pokračovať, funguje podľa očakávania.
Umožňuje prejsť kódom s testom [k] = 5:

1) IsPrime = true (Line: 7)
2)  if (test[k] == 2) is false
3)  else if (test[k] % 2 == 0) is false
4)  we are in the else
4.1) i = 3
4.2) i*i <= 5 ? false
4.3) It does not go in the loop!
4.4) Is Prime == true is true;
--End--

Kde je problém? Prečo si myslíte, že ide do slučky?