Jak rozumiem Panowie, owo przepełnienie sprawia, że zmienna spr po osiągnięciu odpowiednio dużej wielkości zeruje się, ponieważ nie ma w niej miejsca tak? W takim wypadku wystarczy, żebym wykonał taką instrukcję:
long long int spr = 1;
I wówczas miejsca jest wystarczająco. Ostatnią liczbą pierwszą przed 10 000 jest 9973 i ta liczba jest wskazywana przez program jako pierwsza (przetestowałem to). Mimo to, sędzia wciąż odrzuca odpowiedzi. Dlaczego? 
EDYCJA:
Ok, był błąd dla jedynki (wyskakiwały dwa komunikaty), ale udało mi się go zażegnać. Mimo tego, sędzia wciąż wskazuje błąd. Wklejam cały program, ponieważ przeszedł pewne zmiany, a już skończyły mi się pomysły, gdzie jest coś nie tak:
#include
#include <math.h>
using namespace std;
int main()
{
int i, dzielnik, liczba,j;
int pierw;
long long int spr = 1;
cin >> j;
for (int k=0; k < j; k++)
{
cin >> liczba;
pierw = sqrt(liczba);
for (i = 2; i <= pierw; i++)
{
dzielnik = liczba % i;
spr = spr*dzielnik;
}
if (spr == 1 && liczba ==1)
{
cout << "NIE" << endl;
}
if (spr == 0)
{
cout << "NIE" << endl;
}
if ((spr != 0 && liczba!=1) || liczba == 2)
{
cout << "TAK" << endl;
}
spr = 1;
}
return 0;
}