SPOJ liczby pierwsze c++ PRIME_T

0

W ramach poduczenia się poduczenia się pod maturę zacząłem korzystać z serwisu SPOJ, który poznałem zupełnie niedawno.
Już pojawił mi się pierwszy problem - odnośnie tego zadania: http://pl.spoj.com/problems/PRIME_T/
Według mnie mój program jest poprawny, ale SPOJ nie chce mi go przyjąć - "błędna odpowiedź".
KOD:

#include <iostream>

int main()
{
    long int ile, liczba[10000];
    std::cin >> ile;
    for (int i=0; i<ile; i++)
        std::cin >> liczba[i];
    for (int j=0; j<ile; j++)
    {
        bool odp = true;
        if (liczba[j] < 2) odp = false;
        for (int k=2; k<liczba[j]; k++)
            if (liczba[j] % k == 0) { odp = false; break; }
            
        if (odp) std::cout << "TAK" << std::endl;
        else std::cout << "NIE" << std::endl;
    }
    return 0;
}

 

Czy ktoś poradzi mi coś w mojej sprawie?
Pozdrawiam.

2

Liczb może być 100000 a ty przewidujesz maksymalnie 10000. Dodatkowo proponuję zmianę algorytmu na sito Eratostenesa, które tutaj będzie (znacznie) wydajniejsze.

2

Jeżeli jest jakiś błąd w twoim programie(zły wynik) to nigdy nie zastanawiaj się czy sprawdzający się pomylił, czy kompilator zrobił błąd. Zawsze zacznij od szukania błędu w swoim kodzie. Nie jesteś nie omylny, a kompilator czy "maszyna sprawdzająca" w większości przypadków nie robi błędów chyba że im pomożesz :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1