sprawdziłem program na wszystkie znane mi sposoby a sędzia w SPOJ pokazuje błędna odpowiedź. Mógłby ktoś podpowiedzieć gdzie jest błąd? Oto kod:
#include <iostream>
#include <math.h>
using namespace std;
int n,a,c;
int main()
{
cin>>n;
int *tab;
tab=new int[n];
for (int i=0; i<n; i++)
{
cin>>a;
tab[i]=a;
}
for(int i=0; i<n; i++)
{
if(tab[i]<2) cout<<"NIE"<<endl;
else if(tab[i]==2||tab[i]==3||tab[i]==5||tab[i]==7) cout<<"TAK"<<endl;
else
{
for(int j=2; j*j<=tab[i]; j++)
{
c=sqrt(tab[i]);
if(tab[i]%j==0 || tab[i]%c == 0)
{
cout<<"NIE"<<endl;
break;
}
else
{
cout<<"TAK"<<endl;
break;
}
}
}
}
delete [] tab;
return 0;
}
#include <iostream>
#include <math.h>
using namespace std;
int n,a,c;
int main()
{
cin>>n;
int *tab;
tab=new int[n];
for (int i=0; i<n; i++)
{
cin>>a;
tab[i]=a;
}
for(int i=0; i<n; i++)
{
if(tab[i]<2) cout<<"NIE"<<endl;
else if(tab[i]==2||tab[i]==3||tab[i]==5||tab[i]==7) cout<<"TAK"<<endl;
else
{
for(int j=2; j*j<=tab[i]; j++)
{
c=sqrt(tab[i]);
if(tab[i]%j==0 || tab[i]%c == 0)
{
cout<<"NIE"<<endl;
break;
}
else
{
cout<<"TAK"<<endl;
break;
}
}
}
}
delete [] tab;
return 0;
}