本题要求对任意给定的正整数 N,求方程 X2 + Y2 = N 的全部正整数解。
输入格式:
输入在一行中给出正整数 N(N ≤ 10000)。
输出格式:
输出方程 X2 + Y2 = N 的全部正整数解,其中 X ≤ Y。每组解占 1 行,两数字间以 1 空格分隔,按 X 的递增顺序输出。如果没有解,则输出 No Solution。
输入样例1:
884
输出样例1:
10 28
20 22
输入样例2:
11
输出样例2:
No Solution
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/14/exam/problems/801
提交:
题解:
#include<stdio.h>
#include<math.h>
int main(void) {
int N;
scanf("%d", &N);
// flag 变量用于记录是否有解:[0]无解 [1]有解
int flag = 0;
for (int X = 1; X < 100; X++) {
int Y = (int) sqrt(N - X * X);
// X > Y 不符合题目条件
if (X > Y) {
break;
}
if (X * X + Y * Y == N) {
flag = 1;
printf("%d %d\n", X, Y);
}
}
if (!flag) {
printf("No Solution\n");
}
return 0;
}