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

SPOJ - Liczby Pierwsze if'ami

0 głosów
642 wizyt
pytanie zadane 19 sierpnia 2020 w SPOJ przez Billy Użytkownik (680 p.)

Witam. Napisałem taki program (if'ami zamiast algorytmem, bo nie chciałem psuć sobie zabawy gotowcem tylko spróbować własnymi siłami). W konsoli komentarze do wszystkich liczb wypisuje poprawnie, ale jak daję do sprawdzenia, to po -0,21s wyskakuje "Błędna odpowiedź". Sprawdzałem z 50 liczb i wszystkie komentuje dobrze... Nie wiem o co chodzi :((
P.S. W specyfikacji na SPOJu jest podane, że moje a ma być "z przedziału [1..10000]", więc sprawdziłem tylko czy dla a == 1 i a==0 (tak dla spokoju).

#include <iostream>

using namespace std;

int main()
{
//a to liczba do sprawdzenia, n to ile razy ma się wykonać pętla

    int a,n;
    cin >> n;
    for(int i = 1; i<=n; i++)
    {
        cin >> a;
        if((a==0  || a==1)
           || ((a!=2 && a!=3 && a!=5 && a!=7) && (a%2==0 || a%3==0 || a%5==0 || a%7==0)
               )
           )
            cout << "NIE"<<endl;
        else
            cout << "TAK"<<endl;
    }

    return 0;
}

 

1 odpowiedź

+2 głosów
odpowiedź 19 sierpnia 2020 przez adrian17 Mentor (355,240 p.)
wybrane 21 września 2020 przez Billy
 
Najlepsza
Definicją liczby pierwszej nie jest "jest niepodzielna przez 2, 3, 5 i 7".

Proponuję poczytać, jaka jest definicja i zastanowić się, jak tą definicję sprawdzić.
komentarz 19 sierpnia 2020 przez Billy Użytkownik (680 p.)
Definicją liczby pierwszej jest: "liczba naturalna większa od 1, która ma dokładnie dwa dzielniki naturalne: jedynkę i siebie samą". Zatem, jeśli liczba nie dzieli się przez żadną z tych liczb wymienionych w warunku, będzie liczbą pierwszą.

Weźmy za przykład 31 - nie dzieli się przez 2, nie dzieli się przez 3, nie dzieli się przez 5 ani nie dzieli się przez 7 - zatem jest liczbą pierwszą, gdyż nie ma żadnych innych dzielników niż 1 i siebie samą. Czytałem tą definicję, i mój pomysł na jej sprawdzenie jest taki. Bo jeśli nie dzieli się przez żadną z tych podstawowych liczb, to przez żadną większą również się nie podzieli.
komentarz 19 sierpnia 2020 przez adrian17 Mentor (355,240 p.)
Dobra, to teraz zaaplikuj tą samą logikę i powiedz mi czy np 121 lub 899 są liczbami pierwszymi.
komentarz 19 sierpnia 2020 przez Billy Użytkownik (680 p.)
Faktycznie... Dobra, dzięki, popracuję nad tym. Szkoda że SPOJ nie pokazuje, dla jakich przykładów nie działa ://

Podobne pytania

0 głosów
2 odpowiedzi 1,230 wizyt
pytanie zadane 22 października 2017 w SPOJ przez Łuk Asz Nowicjusz (160 p.)
0 głosów
1 odpowiedź 352 wizyt
pytanie zadane 13 lutego 2021 w SPOJ przez Parex Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 891 wizyt
pytanie zadane 2 stycznia 2020 w SPOJ przez Bezk Nowicjusz (140 p.)

93,790 zapytań

142,754 odpowiedzi

323,429 komentarzy

63,394 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...