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

SPOJ Liczby pierwsze c++

Object Storage Arubacloud
0 głosów
432 wizyt
pytanie zadane 30 lipca 2019 w SPOJ przez wjacoszek2000 Początkujący (290 p.)
zmienione kategorie 31 lipca 2019 przez Patrycjerz

Witam, stworzyłem program który pokazuje czy liczba jest pierwsza czy nie https://pl.spoj.com/problems/PRIME_T/ Nie znalazłem podobnego problemu na forum sad Sędzia pokazuje błąd którego nie rozumiem. Bardzo proszę o odp, poprawkę.

#include <iostream>

int k;
int ile;
int liczba;
using namespace std;

int main()
{
   cin>>ile;
   for(int i=0; i<ile; i++)
   {
       cin>>liczba;
       if (liczba==2) cout<<"TAK"<<endl;
       if (liczba<2) cout<<"NIE"<<endl;
       for(int e=2; e<liczba; e++)
       {
         k=liczba%e;

         if(k==0)  {cout<<"NIE"<<endl; break;}
        }
         if(k!=0)   cout<<"TAK"<<endl;


   }


    return 0;
}

 

komentarz 30 lipca 2019 przez Mariusz08 Maniak (62,300 p.)
Popraw kod, bo zmienne typu "k", "e", "i" nic nie mówią.
1
komentarz 31 lipca 2019 przez Patrycjerz Mędrzec (192,320 p.)

Proszę na przyszłość o umieszczanie tego typu pytań w kategorii SPOJ.

2 odpowiedzi

+1 głos
odpowiedź 30 lipca 2019 przez niezalogowany

Zauważ, że gdy k != 0 i liczba < 2 kod wypisze 2 razy tak. Przykład:

2
5
2

Najprościej byłoby wyzerować k:


#include <iostream>
 
int k;
int ile;
int liczba;
using namespace std;
 
int main()
{
   cin>>ile;
   for(int i=0; i<ile; i++)
   {
       cin>>liczba;
       if (liczba==2) cout<<"TAK"<<endl;
       if (liczba<2) cout<<"NIE"<<endl;
       for(int e=2; e<liczba; e++)
       {
         k=liczba%e;
 
         if(k==0)  {cout<<"NIE"<<endl; break;}
        }
         if(k!=0)   cout<<"TAK"<<endl;
       k = 0;
 
 
   }
 
 
    return 0;
}

Mógłbyś również rozdzielić logikę sprawdzania liczby od wypisywania wyniku (patrz typ bool).

komentarz 30 lipca 2019 przez wjacoszek2000 Początkujący (290 p.)

Wyzerowanie k było rozwiązaniem mojego probelmu cool  Dziękuje Bardzo <3 

–2 głosów
odpowiedź 30 lipca 2019 przez Kacper Sas Dyskutant (8,460 p.)
Spoj to nie klepanie zadań, żeby tylko wyjście się zgadzało. Trzeba czasami zagłębić się trochę w problematykę i rozwiązać to trochę innymi algorytmami. Poczytaj np. o sicie Erastotenesa.
komentarz 30 lipca 2019 przez wjacoszek2000 Początkujący (290 p.)

Nie w tym problem wink

Podobne pytania

0 głosów
1 odpowiedź 1,015 wizyt
pytanie zadane 4 maja 2019 w SPOJ przez Psz3mo Mądrala (5,030 p.)
0 głosów
1 odpowiedź 395 wizyt
pytanie zadane 4 kwietnia 2017 w SPOJ przez Kurogami12 Bywalec (2,610 p.)
0 głosów
1 odpowiedź 184 wizyt
pytanie zadane 13 lutego 2021 w SPOJ przez Parex Nowicjusz (200 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

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

...