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

Liczby pierwsze spoj

Object Storage Arubacloud
0 głosów
191 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 575 wizyt
pytanie zadane 1 lipca 2018 w SPOJ przez Fernokip Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 533 wizyt
pytanie zadane 15 lipca 2017 w C i C++ przez Kamil Paradowski Użytkownik (620 p.)
0 głosów
2 odpowiedzi 552 wizyt
pytanie zadane 28 lutego 2019 w C i C++ przez niezalogowany

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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!

...