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

question-closed Spoj zadanie 438 - gdzie błąd

Object Storage Arubacloud
0 głosów
179 wizyt
pytanie zadane 19 stycznia 2017 w C i C++ przez Packman2002 Początkujący (380 p.)
zamknięte 19 stycznia 2017 przez Packman2002

http://pl.spoj.com/problems/PRIME_T/

Czemu spoj mi tego  nie zalicza

#include <iostream>


using namespace std;

int x;
int i;

int main()
{
    cout << "Program powie ci czy liczba kt\242r\245 napiszesz jest liczb\245 pierwsz\245"<<endl;
    cout <<endl;


        for(i=4;i>=0;i--)
        {
        cout << "Podaj liczb\251 naturaln\245:" ;
    cin >> x;
    cout <<endl;
    if (x==2||x==3||x==5||x==7)
    {
        cout <<"TAK"<<endl;
        cout <<endl;


    }

   else if (x==1||x==0)
    {
        
       cout << endl;

    }

   else if  (x%2==0||x%3==0||x%5==0||x%7==0)
    {
        cout <<"NIE"<<endl;
        cout <<endl;

    }

    else if (x%2!=0&& x%3!=0 && x%5!=0 && x%7!=0)
    {
        cout <<"TAK"<<endl;
        cout <<endl;

    }
}
    return 0;
}

 

 

 

komentarz zamknięcia: Otrzymałem odpowiedź

1 odpowiedź

+1 głos
odpowiedź 19 stycznia 2017 przez Kornelia Kobiela Nałogowiec (33,340 p.)
wybrane 19 stycznia 2017 przez Packman2002
 
Najlepsza
Liczba pierwsza to jest liczba, która ma dwa dzielniki, dzieli się przez 1 i przez samą siebie. W twoim algorytmie sprawdzasz czy liczba dzieli się przez 2,3,5,7 - to tylko 4 pierwsze liczby ze zbioru licz pierwszych. A co np. z 11? No bo wiesz, liczba 121 jest wg ciebie pierwsza, a nie jest tak na prawdę. Poczytaj o sicie Eratostenesa.

Poza tym niepotrzebnie dajesz te teksty. Podaj liczb\251 naturaln\245:, bo spoj może to odczytać jakko wyjście twojego programu. W tych zadaniach nie podaje się takiego interfejsu z użytkownikiem, tylko zaczyna od wejścia i daje wyjście.
komentarz 19 stycznia 2017 przez Packman2002 Początkujący (380 p.)

Nie do końca bo z tego co zaobserwowałem wszystkie liczby które nie są liczbami pierwszymi dzielą się albo przez 2 albo przez 3 albo 5 albo 7 a więc automatycznie wszystkie liczby które nie dzielą się przez te liczby są liczbami pierwszymi . Przetestuj to zrobiłem to przed tym zadaniem na spoja (zobacz działa :D ) i teraz próbuje to zamienić na to by mógł to rozwiązać bot .

#include <iostream>
#include<windows.h>

using namespace std;

int x,y;

int main()
{
    cout << "Program powie ci czy liczba kt\242r\245 napiszesz jest liczb\245 pierwsz\245"<<endl;
    cout <<endl;

    cout << "Ile liczb naturalnych chcesz sprawdzi\206:";
    cin >> y;
    cout << endl;

        while (y>0)
        {
        y--;
        cout << "Podaj liczb\251 naturaln\245:" ;
    cin >> x;
    cout <<endl;
    if (x==2||x==3||x==5||x==7)
    {
        cout <<"TAK"<<endl;
        cout <<endl;
        system("pause");
        system("cls");

    }

   else if (x==1||x==0)
    {
        cout <<"NIE"<<endl;
        cout <<endl;
        system("pause");
        system("cls");
    }

   else if  (x%2==0||x%3==0||x%5==0||x%7==0)
    {
        cout <<"NIE"<<endl;
        cout <<endl;
        system("pause");
        system("cls");
    }

    else if (x%2!=0&& x%3!=0 && x%5!=0 && x%7!=0)
    {
        cout <<"TAK"<<endl;
        cout <<endl;
        system("pause");
        system("cls");
    }
}
    return 0;
}

 

1
komentarz 19 stycznia 2017 przez Kornelia Kobiela Nałogowiec (33,340 p.)
No właśnie to tak nie działa.  Nie wiem,  może wziąłeś tylko liczby w zakresie 2-100. A spoj bierze liczby w zakresie 0-10000. Liczby złożone,  to te które nie są pierwszymi i mają więcej dzienników 1 i ta sama liczba.  Przykład 121. Dzielniki 1, 11, 121. Zauważ,  że liczba 11 też jest liczbą pierwszą.  Wniosek z tego taki,  że aby sprawdzić,  czy liczba jest pierwszą, potrzebujemy sprawdzić czy dana liczba nie dzieli się przez jakąkolwiek liczbę pierwszą mniejszą od niej.
komentarz 19 stycznia 2017 przez Packman2002 Początkujący (380 p.)
Ok w takim razie poszukam jeszcze więcej dzielników dziękuje za pomoc
1
komentarz 19 stycznia 2017 przez Kornelia Kobiela Nałogowiec (33,340 p.)
Te Dzielniki można generować. Poczytaj o siciie Eratostenesa,  które nam generuje liczby pierwsze w danym zakresie. I możesz dać plusika

Podobne pytania

0 głosów
2 odpowiedzi 741 wizyt
0 głosów
1 odpowiedź 627 wizyt
pytanie zadane 10 listopada 2019 w C i C++ przez PaaaV Nowicjusz (140 p.)
0 głosów
1 odpowiedź 791 wizyt
pytanie zadane 10 kwietnia 2016 w C i C++ przez danior Początkujący (330 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 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!

...