Artur 69 wyśw. 07-07-2025 17:02

Praca domowa 3 zad 15

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


Programowanie Dodaj post do ulubionych Poproś o pomoc
s.gugula 09-07-2025 00:38

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 ;)


Artur 09-07-2025 14:32

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ł?


s.gugula 10-07-2025 14:46

Wypisze true lub false w zależności od ostatniego czynnika sprawdzonego.


Artur 10-07-2025 15:24

Czyli np dla 9 ostatni czynnik to 8 i 9 nie jest podzielne przez 8, więc wypisze true tak?


s.gugula 11-07-2025 20:55

Tak.


Zadzwoń teraz Dotknij, aby się ze mną skontaktować.