Na tak postawione pytanie [+załączony kod] trudno znaleźć rozsądną podpowiedź. Nie wiadomo czy pytający chodzi jeszcze do szkoły podstawowej i czy może przypadskiem nosi okulary [jak ja]. Nie wiadomo, czy pytający, wie, że ma błędnie działający program, i potrzebuje tylko małej pomocy i naprowadzenia, w znalezieniu błędu, czy też nie widzi błędu i uważa, że jego program działa bezbłędnie.
Wygląda, że sugestie, niezadziałały, więc:
- “TAK” != “Tak”
- “NIE” != “Nie”
- Testów może być do 100 000 a nie 10 000 - przeczytaj dokładniej treść zadania.
- W funkcji first(…) brakuje na końcu return true - swoją drogą lepszą nazwą funkcji byłoby np: isPrime(…), w języku angielskim, liczby pierwsze, to prime numbers, a nie first numbers
–
Mniej istotne uwagi:
- Staraj się używać zmiennych lokalnych a nie globalnych.
- Sprawdzanie czy liczba jest pierwszą, można zakończyć o wiele szybciej, poczytaj o tym.
- Dobrze jest używać funkcji, ale ich nadmiar już nie jest dobrym pomysłem.
PS
Też tak kiedyś podpowiadałem, ale okazuje się, że w tym wypadku, najpierw wczytanie całego wejścia od razu do odpowiednio dużej tablicy [bufora], a dopiero potem wykonanie “obliczeń” skutkuje kilkakrotnie szybciej działającym programem - 0.15 vs 0.03 sek. Mam na myśli tylko tą jedną zmianę, bez żadnych innych przyśpieszaczy w rodzaaju wyłączania synchro. Możliwe więc, że warto zrewidować swoje poglądy i za każdym razem sprawdzić, zanim się podpowie
Może bez tak wielkiej różnicy, ale zdarzyły mi się tego rodzaju cudeńka na SPOJu. Nie zwracałem na nie jednak uwagi traktując je jako anomalie w działaniu sędziego.
Nie sądzę, aby należało zrewidować swoje poglądy co do przypadku ogólnego. Swoją drogą - dlatego też nie praktykuję teorii śrubowania czasów na SPOJu Tablice mogą wydawać się początkującym bardziej intuicyjne, ale w rzeczywistości ich niepotrzebne użycie jest błędem w sztuce i tyle. (Zwykle przypadkowe) poprawienie czasu o ułamek sekundy nie jest żadnym usprawiedliwieniem dla ich użycia, jeżeli nie było to konieczne.
PS http://pl.spoj.com/problems/AL_23_01/1. Zadanie polecam rozwiązać tablicą i kolejką, a następnie porównać rozwiązania pod względem wydajnościowym, złożonością kodu i możliwością zastosowania w praktyce.
Przecież @narbej Ci podpowiedział i wskazał na błędy więc o co Ci chodzi?
Poza tym umiejętność zadawania pytań nie zależy od tego czy ktoś zaczyna programować czy jest zawodowym programistą. Jakieś sugestie?
Nie jest nawet poprawnym zdaniem pytającym.
Nieźle Pewnie faktycznie - jakiaś dobrze zrobiona optymalizacja. Przypomina mi to ten najpopularniejszy na stacku wątek odnośnie c++: https://stackoverflow.com/questions/11227809/why-is-it-faster-to-process-a-sorted-array-than-an-unsorted-array4 może być i tutaj przyczyna podobna.