15. Napisz metodę, która przyjmuje jeden argument typu całkowitego i stwierdza, czy zadana jako
argument liczba całkowita jest liczbą pierwszą. Metoda ma zwracać jako rezultat wartość równą true,
jeśli liczba spełnia warunek oraz false w przeciwnym wypadku. W metodzie main() przetestuj
działanie stworzonej metody.
// // SPOSOB 1:
// public class MyClass {
// static boolean pierwsza(int x)
// {
// boolean y=true;
// for(int i = 2; i < x; i++)
// {
// if(x%i==0)
// {
// y = false;
// break;
// }
// else
// {
// y = true;
// }
// }
// return y;
// }
// public static void main(String args[]) {
// int a = 175;
// System.out.println("Czy liczba "+a+" jest liczba pierwsza? "+pierwsza(a));
// }
// }
// //================================================================================
// // SPOSOB 2:
// public class MyClass {
// public static void main(String args[]) {
// int a = 4;
// System.out.println("Czy liczba " + a + " jest pierwsza? " + pierwsza(a));
// int b = 13;
// System.out.println("Czy liczba " + b + " jest pierwsza? " + pierwsza(b));
// }
// static boolean pierwsza (int liczba) {
// for (int i = 2; i < liczba; i++)
// {
// // Jeśli istnieje jakiś dzielnik inny od 1 i podanej liczby, to podana liczba nie jest liczbą pierwszą.
// if (liczba%i == 0)
// {
// return false;
// }
// }
// // Jeśli pętla nie wykazała, że liczba nie jest pierwsza, to znaczy, że jest pierwsza.
// return true;
// }
// }
Dlaczego w sposobie 1 trzeba użyć break po false, aby program działał poprawnie, a w sposobie 2 (z odpowiedzi) nie trzeba używać break? Jedyną różnicą pomiędzy tymi sposobami jaką widzę jest return true, który w sposobie 1 jest zapisany w pętli else a w sposobie 2 poza nią. Nie rozumiem czemu to miałoby mieć takie znaczenie
Czyli bez tego breaka to np gdyby wziąć liczbę podzielną przez 3 to program sprawdziłby, że nie jest podzielna przez 2, więc ustawi y=true no ale potem przy sprawdzeniu podzielności przez 3 nie nadpisze tego y na false?
Czy po prostu ten program wypisze true lub false w zależności od tego jaki ostatni czynnik sprawdził?
Wypisze true lub false w zależności od ostatniego czynnika sprawdzonego.
Czyli np dla 9 ostatni czynnik to 8 i 9 nie jest podzielne przez 8, więc wypisze true tak?
Dlatego, że w pierwszym sposobie zrobiłeś jeszcze tego else'a, który przecież w kolejnym obiegu pętli z y = false może Ci już zrobić y = true i całe sprawdzenie jest już do wyrzucenia ;)