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

Co w tym kodzie jest nie tak ? Polski SPOJ

42 Warsaw Coding Academy
0 głosów
373 wizyt
pytanie zadane 3 maja 2016 w C i C++ przez wojtekw0703 Użytkownik (960 p.)
edycja 3 maja 2016 przez wojtekw0703

Witam. Proszę o pomoc. Co w tym kodzie jest nie tak ? Wszystko moim zdaniem jest dobrze napisane,ale SPOJ mi pokazuje,że zadanie jest źle.

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

 
 

​#include <iostream>

using namespace std;

int main()
{
int n;
cin>>n;

       if ((n%2==0) && n<100000)
       {
          cout<<"Nie"<<endl;
       }
     else if((n/2)>0 && n<100000)
     cout<<"Tak"<<endl;

}
komentarz 3 maja 2016 przez kubaapk Nałogowiec (44,270 p.)
To tak nie zadziała. Możesz mi wytłumaczyć ten kod który napisałeś?
komentarz 3 maja 2016 przez wojtekw0703 Użytkownik (960 p.)

Polecenie zadania jest w linku

komentarz 3 maja 2016 przez kubaapk Nałogowiec (44,270 p.)
Przeczytałem je. Chodzi mi o Twój kod. Co sprawdzają warunki?
komentarz 3 maja 2016 przez wojtekw0703 Użytkownik (960 p.)

Jeśli modulo z dzielenia jest zero oraz n liczba jest mniejsza od 100000 to ma wyświetlić "Tak" a w innym przypadku "Nie". 

komentarz 3 maja 2016 przez kubaapk Nałogowiec (44,270 p.)
No ale przecież to nie zadziała. 4 mod 2 = 0. I co, 4 jest liczbą pierwszą?

Poza tym nie pobierasz liczby testów.
komentarz 3 maja 2016 przez wojtekw0703 Użytkownik (960 p.)
Źle zinterpretowałeś kod.

"Jeśli reszta z dzielenia np.:4 wynosi 0" to wtedy wyświetla się,że liczba nie jest liczbą pierwszą, bo dzieli się przez 1,2,4.

To jak ten kod powinien wyglądać ?
komentarz 3 maja 2016 przez kubaapk Nałogowiec (44,270 p.)
(n/2)>0 && n<100000, to też nie zadziała. Weź sobie 9.

9/2 = 4.5 i to więcej niż 0, a "9" nie jest liczbą pierwszą.

 

Zapoznaj się z algorytmami wyznaczania liczb pierwszych np. sito eratostenesa.

2 odpowiedzi

0 głosów
odpowiedź 3 maja 2016 przez MetGang Nałogowiec (34,360 p.)
https://pl.wikipedia.org/wiki/Liczba_pierwsza

Polecam zapoznać się z definicją liczby pierwszej pierw.
0 głosów
odpowiedź 3 maja 2016 przez Porcupine Nałogowiec (31,560 p.)
Twój kod mówi mniej więcej tyle:

Jeśli liczba n jest parzysta mniejsza od 100000 => wypisz NIE.

Jeśli powyższy warunek nie zaszedł i liczba n / 2 jest większa od 0 (tzn. w praktyce jest jakąkolwiek liczbą nieparzystą większą od 1) => wypisz TAK.

Jeśli powyższe warunki nie zostaną spełnione => nie rób nic.

Weźmy liczbę pod lupę liczbę 9:
Parzysta nie jest, więc pierwszy warunek if () nie zostanie spełniony.
Przechodzimy do else if(). 9 / 2 = 4 co jest większe od zera. Dodatkowo 9 < 100000. => Twój program wypisuje "TAK".

Jednak 9 nie jest liczbą  pierwszą, ponieważ jest podzielny dodatkowo przez 3 (Po za podzielnością przez 1 i samą siebie).

Pozdrawiam,

Podobne pytania

+1 głos
3 odpowiedzi 1,396 wizyt
pytanie zadane 29 lipca 2016 w C i C++ przez mat1911 Nowicjusz (230 p.)
–1 głos
2 odpowiedzi 545 wizyt
pytanie zadane 28 sierpnia 2016 w C i C++ przez pewien_programista Obywatel (1,070 p.)
0 głosów
2 odpowiedzi 499 wizyt
pytanie zadane 11 marca 2016 w C i C++ przez hanah1411 Nowicjusz (140 p.)

93,383 zapytań

142,382 odpowiedzi

322,539 komentarzy

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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...