本题要求对任意给定的正整数N,求方程的全部正整数解。
输入格式:
输入在一行中给出正整数N(≤10000)。
输出格式:
输出方程的全部正整数解,其中X≤Y。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。如果没有解,则输出
No Solution
。输入样例1:
884
输出样例1:
10 28 20 22
输入样例2:
11
输出样例2:
No Solution
#include <stdio.h>
#include <math.h>
void f(void); //因为函数里无参数所以用void
int n;
int main()
{
scanf("%d",&n);
f();
return 0;
}
void f(void)
{
int x;
int y;
int count=0;
for(x=1;x<=sqrt(n)+1;x++){ //这里sart(n)+1是为了让范围更充足,不写+1也行。
for(y=x;y<=sqrt(n)+1;y++){ //因为y必定>=x,所以让y=x开始,效率更高
if(x*x+y*y==n && x<=y){ //这里x是最外层循环,因为要遵循x递增的顺序输出,并且只有当x<=y时才输出。
printf("%d %d\n",x,y);
count=1;
}
}
}
if(count==0){
printf("No Solution");
}
}