7-21 求特殊方程的正整数解(15 分)

7-21 求特殊方程的正整数解(15 分)

本题要求对任意给定的正整数$N$,求方程$X^2+Y^2=N$的全部正整数解。

输入格式:

输入在一行中给出正整数$N(\leq 10000)$。

输出格式:

输出方程$X^2+Y^2=N$的全部正整数解,其中$X\leq Y$。每组解占1行,两数字间以1空格分隔,按$X$的递增顺序输出。如果没有解,则输出No Solution

输入样例1:

1
884

输出样例1:

1
2
10 28
20 22

输入样例2:

1
11

输出样例2:

1
No Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h> 

int main(void) {
int n, x, y;
int flag = 0;
scanf("%d", &n);
int half = n / 2;
for(x = 1; x <= half; ++x) {
for(y = x; y <= half; ++y) {
if(x * x + y * y == n) {
flag = 1;
printf("%d %d\n", x, y);
}
}
}
if(!flag)
printf("No Solution\n");
return 0;
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×