• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Polski spoj PRIME_T - Liczby Pierwsze Java

Object Storage Arubacloud
0 głosów
311 wizyt
pytanie zadane 7 listopada 2021 w Java przez danielxwbt Nowicjusz (150 p.)
zamknięte 7 listopada 2021 przez danielxwbt

Witam, nie rozumiem dlaczego spoj zwraca wynik "Błędna odpowiedź" w przypadku moich danych testowych wszystkie wyniki są poprawne:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    while (sc.hasNext()) {
        int currentVal = Integer.parseInt(sc.nextLine());
        if (isPrime(currentVal)) {
            System.out.println("TAK");
        } else {
            System.out.println("NIE");
        }
    }
}

public static boolean isPrime(int val) {
    if (val <= 1 || val % 2 == 0 || val % 3 == 0) {
        return false;
    }
    if (val == 2 || val == 3) {
        return true;
    }
    for (int i = 5; i * i <= val; i += 6) {
        if (val % i == 0 || val % (i + 2) == 0)
            return false;
    }
    return true;
}

Wiem, że algorytm prostacki z delikatną optymalizacja 6k+1, ale chodzi tutaj raczej o zwykłe rozwiązanie zadania.
Proszę o podpowiedź.

komentarz zamknięcia: Dostałem kompletną odpowiedź na pytanie.

1 odpowiedź

0 głosów
odpowiedź 7 listopada 2021 przez Wiciorny Ekspert (270,110 p.)
wybrane 7 listopada 2021 przez danielxwbt
 
Najlepsza

W treści zadania  jest podane ile testów n ma być wykonane czyli po podaniu liczby n (przez użytkownika), program powinien "pobrać" od użytkownika n liczb/

Druga sprawa 

 if (val <= 1 || val % 2 == 0 || val % 3 == 0) {

        return false;

    }

2 jest liczbą pierwszą a u Ciebie nie będzie. bo następny warunek się nie wykona gdyż pierwszy zwróci false... dlaczego? Dlatego  że massz operacje lub 

 if (val == 2 || val == 3) {
            return true;
        }

to nigdy nie będzie prawdą.  z racji poprzedniej instrukcji, 

Condition 'val == 2 || val == 3' is always 'false' 
Condition 'val == 3' is always 'false' when reached 

więc twoj program nie działa poprawnie, dlatego wyniki nie są akceptowalne.  

Podobne pytania

0 głosów
0 odpowiedzi 701 wizyt
pytanie zadane 20 grudnia 2018 w Java przez Pieko Nowicjusz (120 p.)
+1 głos
2 odpowiedzi 1,607 wizyt
pytanie zadane 6 października 2021 w Python przez Andrzej Hnatiuk Początkujący (350 p.)
+1 głos
1 odpowiedź 489 wizyt
pytanie zadane 19 lipca 2020 w C i C++ przez Arek04 Użytkownik (700 p.)

92,568 zapytań

141,422 odpowiedzi

319,637 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...