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

Dlaczego SPOJ tego nie akceptuje

Object Storage Arubacloud
+2 głosów
229 wizyt
pytanie zadane 31 marca 2023 w Python przez ReZerTer Początkujący (410 p.)

Cześć napisałem program w pytonie odnośnie liczb pierwszych który działa dokładnie tak jak opisuje go zadanie jednak mimo to spoj nie akceptuje mojego kodu ktoś wie dlaczego  

kod:

def czypierwsza(x):
    for i in range(2, x):
        if x % i == 0:
            return False
        else:
            return True


a = input()
a = int(a)
lista = []
for o in range(a):
    f = input()
    f = int(f)
    if czypierwsza(f):
        z = "TAK"
        lista.append(z)
    else:
        y = "NIE"
        lista.append(y)

for u in range(a):
    print(lista[u])

2 odpowiedzi

+2 głosów
odpowiedź 31 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
Kilka rzeczy

1 - W funkcji czy pierwsza jest błąd, sprawdzasz czy N jest podzielne przez i, jak tak to spoko, że zwracasz false, ale dlaczego jak nie jest to zwraczasz false?

2 - Nawet jak poprawisz tą funkcję czy pierwsza, to i tak moim zdaniem może nie przejść czasowo. To zadanie to chyba chodzi o zaimplementowanie sita Eratostenesa i w O(1) odpowiadanie czy jest pierwsza.
komentarz 31 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
samo sito Eratostenesa jest dość prostym algorytmem. Dla każdej liczby pierwszej wykreślasz jej wielokrotności, bo one napewno nie będą liczbami pierwszymi.
1
komentarz 31 marca 2023 przez Great Stary wyjadacz (12,360 p.)
2. Rozwiązanie bez sita powinno zmieścić się w limicie czasowym.
komentarz 31 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
Zależy, raczej tak, ale 10^7 operacji może być na styk. Zależy jakie limity.
komentarz 31 marca 2023 przez Great Stary wyjadacz (12,360 p.)
Jeżeli autor poprawi funkcję to powinien osiągnąć ~0.5s (limit wynosi 5).
komentarz 31 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
a no to tak jak jest 5 sekund to w C++ powinno wejść(99,9999999999....%). Nie sprawdzałem jakie są limity czasowe. Na pythonie się nie znam, więc nwm w ile się wykona 10^7 operacji.
+1 głos
odpowiedź 31 marca 2023 przez adrian17 Ekspert (344,860 p.)

który działa dokładnie tak jak opisuje go zadanie

no, nie :)

Odpal sobie funkcję `czypierwsza()` na liczbach między 1 a 20 i zobacz czy wyniki są poprawne.

(przy okazji, nie potrzebujesz tej pośredniej listy)

Podobne pytania

0 głosów
1 odpowiedź 221 wizyt
pytanie zadane 6 grudnia 2016 w C i C++ przez fixed Nowicjusz (220 p.)
0 głosów
1 odpowiedź 224 wizyt
pytanie zadane 10 kwietnia 2021 w SPOJ przez AizoOz Początkujący (490 p.)
0 głosów
0 odpowiedzi 460 wizyt
pytanie zadane 21 sierpnia 2020 w SPOJ przez magda_19 Gaduła (3,080 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!

...