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

SPOJ Liczby pierwsze c++

Cloud VPS
0 głosów
648 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,280 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,293 wizyt
pytanie zadane 4 maja 2019 w SPOJ przez Psz3mo Mądrala (5,030 p.)
0 głosów
1 odpowiedź 621 wizyt
pytanie zadane 4 kwietnia 2017 w SPOJ przez Kurogami12 Bywalec (2,610 p.)
0 głosów
1 odpowiedź 229 wizyt
pytanie zadane 13 lutego 2021 w SPOJ przez Parex Nowicjusz (200 p.)

93,455 zapytań

142,449 odpowiedzi

322,719 komentarzy

62,837 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

Kursy INF.02 i INF.03
...