Я пытаюсь решить этот вопрос от SPOJ: <<a href="https://www.spoj.com/problems/APM/" rel="nofollow noreferrer">https://www.spoj.com/problems/APM/>
Мистер. Абул большой поклонник простых чисел. Как поклонник простых чисел, он хочет знать, можно ли выразить простое число P как разность двух квадратов или нет?
Другими словами, вам нужно вычислить два натуральных числа X и Yгде P = X ^ 2 - Y ^ 2
Например, простое число P = 5 может быть выражено как 3 ^ 2 - 2 ^ 2 = 9 - 4 = 5, здесь X = 3 и Y = 2.
int main()
{
int z;
cin>>z; //test cases
while(z--)
{
int n, i, flag = 0;
cin>>n;
for(i=2; i<=sqrt(n); ++i) {
if(n%i==0) {
flag=1;
break;
}
}
if (flag==0) //prime number taken
{
if(n==2)
{
cout<<"-1"<<endl;
}
else
{
if(!(n%2==0))
cout<<(n+1)*0.5<<" "<<(n-1)*0.5<<endl;
else
{
cout<<"-1"<<endl;
}
}
}
else
cout<<"-1";
}
// your code goes here
return 0;
}
Но это все еще не принято в качестве ответа, что я делаю не так? Кроме того, любые комментарии о лучшем подходе к решению этой проблемы очень приветствуются.