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

Liczby pierwsze spoj

VPS Starter Arubacloud
0 głosów
199 wizyt
pytanie zadane 13 października 2019 w C i C++ przez Bartek K. Nowicjusz (230 p.)

Problem dotyczy zadania ze spoja o nazwie "Liczby pierwsze". Program ma sprawdzić czy podana liczba jest pierwsza i jeśli jest wypisać TAK a jeśli nie jest wypisać NIE. Problem w tym, że dla wszystkich przykładów jakie podałem program zadziałał dobrze, lecz sędzia nie zalicza zadania wypisując "błędna odpowiedź".

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int powtorzenia;
    cin>>powtorzenia;
    for(int j=0; j<powtorzenia; j++)
    {
        int liczba;
        cin>>liczba;
        if(liczba==1)
            cout<<"NIE"<<endl;
        else if((liczba==2)||(liczba==3)||(liczba==5))
            cout<<"TAK"<<endl;
        else if((liczba%2!=0)&&(liczba%3!=0)&&(liczba%5!=0)&&((sqrt((float)liczba)-trunc(sqrt((float)liczba)))!=0)&&((cbrt((float)liczba)-trunc(cbrt((float)liczba)))!=0))
            cout<<"TAK"<<endl;
        else
            cout<<"NIE"<<endl;
    }
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 13 października 2019 przez DawidK Nałogowiec (37,910 p.)
Liczby pierwsze dzielą się tylko przez 1 i samą siebie

według tego co napisałeś liczba pierwsza to taka, która:

- jest równa 2, 3 lub 5

lub

- dzieli się z resztą przez 2, 3 i 5

Co np z taką liczbą jak:

49, dzieli się z resztą przez 2 jest 1, przez 3 jest 1 przez 5 jest 4 (według programu jest pierwsza, ale dzieli się jeszcze przez 7)

121 dzieli się z resztą przez 2 jest 1, przez 3 jest 1, przez 5 jest 1 (według programu jest pierwsza, ale dzieli się jeszcze przez 11)

To co napisałem może Cie trochę naprowadzić.
komentarz 14 października 2019 przez Bartek K. Nowicjusz (230 p.)
Ale ten if nie kończy się na tym. Dalej warunek mówi, że liczby pierwsze to liczby, których pierwiastek 2 i 3 stopnia nie jest liczbą całkowitą, czyli to rozwiązuje problem z liczbami 49, 121, 169, 1331, itp. A zakres jest tylko do 10 000, więc to wystarczy.
komentarz 14 października 2019 przez DawidK Nałogowiec (37,910 p.)
Przepraszam, nie zauważyłem (mie mieści mi sie na ekranie)

77 (7*11)

przy dzieleniu przez 2 - 1

przy dzieleniu przez 3 - 2

przy dzieleniu przez 5 - 2

pierwistk 2 stopnia - ok 8.77

pierwiastek 3 stopnia - ok 4.25

według programu jest to liczba pierwsza, a dzieli się przez 7 i 11
komentarz 22 października 2019 przez Bartek K. Nowicjusz (230 p.)
Czyli mój sposób jednak nie ma sensu. Muszę zapoznać się z zasadami sita eratostenesa i rozwiążę zadanie innym sposobem. W każdym razie dziękuję za pomoc.

Podobne pytania

0 głosów
2 odpowiedzi 612 wizyt
pytanie zadane 1 lipca 2018 w SPOJ przez Fernokip Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 564 wizyt
pytanie zadane 15 lipca 2017 w C i C++ przez Kamil Paradowski Użytkownik (620 p.)
0 głosów
2 odpowiedzi 625 wizyt
pytanie zadane 28 lutego 2019 w C i C++ przez niezalogowany

92,843 zapytań

141,782 odpowiedzi

320,858 komentarzy

62,174 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...