7-21 求特殊方程的正整数解 (15分)
程序员文章站
2022-06-07 10:30:33
...
#include <stdio.h>
#include <math.h>
int main(){
int n,x,y,flag=0;
scanf("%d",&n);
for(x=1;x<sqrt(n/2);x++){ //这里要小于sqrt(n/2)是因为答案会多一倍,后半部分的答案就是前半部分的x,y颠倒,毕竟这个方程x和y是等价的!
int temp = n-x*x;
y = (int)sqrt(temp);
if(sqrt(temp)==y){
flag = 1;
printf("%d %d\n",x,y);
}
}
if(flag==0){
printf("No Solution");
}
}