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

SPOJ - liczby pierwsze

Object Storage Arubacloud
0 głosów
389 wizyt
pytanie zadane 29 czerwca 2016 w C i C++ przez WuJot Początkujący (250 p.)
Witam,

Postanowiłem zrobić sobie wyzwanie polegające na jak najszybszym pisaniu kodu (jest prosty i prymitywny, ale staram się żeby wychodziło jak najlepiej :D). Zastanawia mnie czemu spoj nie akceptuje mojego kodu.
 

https://ideone.com/d3MUQq

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

Tutaj niby działa, ale gdzieś musi być ten błąd, którego nie mogę znaleźć.
Z góry dziękuje za wskazówki.
komentarz 29 czerwca 2016 przez DragonCoder Nałogowiec (36,500 p.)
1 nie jest liczbą pierwszą, a siedem jest. Więc twój program.działa błędnie
komentarz 29 czerwca 2016 przez WuJot Początkujący (250 p.)
Dalej wykluczam wszystkie liczby mniejsze lub równe 1. Program działa dobrze, output jest dobry, tylko spoj nie chce go zaakceptować.

2 odpowiedzi

0 głosów
odpowiedź 30 czerwca 2016 przez MetRiko Nałogowiec (37,110 p.)
wybrane 30 czerwca 2016 przez WuJot
 
Najlepsza
Powód dlaczego SPOJ nie akceptuje takiego kodu jest jeden.. twój po prostu zwraca błędne wyniki.. Zamiast mówić ci co masz źle po prostu pokażę parę przykładów przy których program ci pokaże zły wynik:
11*11=121
11*13=143
11*17=187
13*13=169
23*23=529
Przypominam, że przedział wprowadzanych liczb wynosi od 1 do 10000. Może (ale tylko może) gdyby program miał mieć liczby w zakresie od 1 do 100 to wyniki byłyby prawidłowe.. tutaj niestety musisz zmienić taktykę.
0 głosów
odpowiedź 29 czerwca 2016 przez obl Maniak (51,280 p.)

W twoim kodzie najpierw jest warunek:

if(liczba[i] == 3 ||liczba[i] == 5 || liczba[i] == 7 || liczba[i] ==2)

a później:

	else if(liczba[i]<=1 ||liczba[i]%3 == 0 || liczba[i]%5 == 0 || liczba[i]%7 == 0 || liczba[i]%2 == 0)

Przecież to jest bez sensu, zakres liczb jakie musisz sprawdzać jest 1 do 10000 no to już liczba 23 nie spełnia tych warunków a jest liczbą pierwszą. Zła implementacja algorytmu. Poszukaj informacji w internecie na ten temat. Istnieją różne algorytmy rozwiązujące problem sprawdzania czy dana liczba jest pierwsza.

komentarz 29 czerwca 2016 przez WuJot Początkujący (250 p.)
Jak liczba 23 nie jest w zakresie 1 -10000 :D. Mój programik twierdzi że jest to liczba pierwsza.

Algorytm działa poprawnie, sprawdzone ze wszystkimi liczbami do 100 :), potem wybiórczo z większymi.
Ad 1, ma to sens, pierwszy if, mówi nam że podane liczby zawsze są liczbami pierwszymi.

Drugi if, wyklucza nam wszystkie liczby parzyste, oraz te które są podzielne przez wyżej podane liczby (2,3,5,7).

Else zaś to wszystkie pozostałe, czyli liczby pierwsze.
Jeśli nie wierzysz mojej metodzie - potestuj, w linku który podałem masz przycisk "klonuj", tam możesz wpisać swoje dane.
Problem nie polega że kod mi nie działa, a że spoj nie chce mojego outupa zaakceptować, mimo iż jest dobry.
komentarz 30 czerwca 2016 przez obl Maniak (51,280 p.)
Nie kompilowałem programu twojego, i być może dla 23 ten algorytm się sprawdzi ale (tak jak już ktoś napisał) na pewno nie sprawdzi się on dla większych liczb no po prostu nie ma na to szans i dlatego walnąłem jakąś mniejszą liczbę pierwszą, której nie sprawdzasz. Na prawdę, jest przecież strona cała, gdzie są liczby pierwsze z zakresu od  0 - 1000 podane i możesz sobie sprawdzić. Jest nawet na wikipadi opisane to jak można sprawdzać, czy liczba jest pierwsza, wystarczy chcieć pogrzebać a znajdziesz i nie potrzebujesz do tego niczyjej pomocy.

Podobne pytania

0 głosów
0 odpowiedzi 217 wizyt
pytanie zadane 1 sierpnia 2023 w C i C++ przez Jakub005 Początkujący (310 p.)
0 głosów
1 odpowiedź 309 wizyt
pytanie zadane 20 lutego 2023 w Python przez lukaskrol7 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 315 wizyt
pytanie zadane 7 listopada 2021 w Java przez danielxwbt Nowicjusz (150 p.)

92,631 zapytań

141,495 odpowiedzi

319,863 komentarzy

62,011 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!

...