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