Oto kod sprawdzający, czy liczba jest liczbą pierwszą. Testowałem go z naprawdę wielkimi liczbami pierwszymi takimi jak 20988936657440586486151265256610222593863921 i wszystko się zgadzało, lecz SPOJ cały czas podaje komunikat o błędnej odpowiedzi. Wyjaśni mi ktoś dlaczego?
#include <iostream>
using namespace std;
int n;
int main()
{
cin >> n;
int A[n];
int i=0;
int liczba[i];
while(i<n)
{
cin >> liczba[i];
i++;
}
i=0;
while(i<n)
{
A[i]=0;
int x=2;
while(x<liczba[i])
{
if(liczba[i]%x==0&&liczba[i]!=2)
{
A[i]++;
}
x++;
}
i++;
}
i=0;
while(i<n)
{
if(liczba[i]==0)
cout<<"NIE"<<endl;
else if(liczba[i]==1)
{
cout<<"NIE"<<endl;
}
else if(A[i]==0)
cout<<"TAK"<<endl;
else
cout<<"NIE"<<endl;
i++;
}
return 0;
}
Z góry dzięki za pomoc