从题目可知,因为x和y的平方和等于a,所以x和y的值一定不超过sqrt(a)
方案1:对于每一个a,利用双层循环遍历所有的x和y的可能性,确定是否存在满足条件
方案2:对于每一个a,利用单层循环遍历所有可能的x,根据公式计算出y,如果y是正整数,说明存在满足条件的情况
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n,a;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
bool f=false;
for(int x=1;x*x<=a;x++){
int y=sqrt(a-x*x);
if(y*y+x*x==a){
f=true;
break;
}
}
cout<<(f?"Yes\n":"No\n");
}
return 0;
}