题目链接:7-21 求特殊方程的正整数解
一. 题目
1. 题目
2. 输入输出样例
3. 限制
二、代码
1. 代码实现
#include <stdio.h>
#include <stdbool.h>
int main(void) {
unsigned int n, x, y;
bool solution = false;
if (scanf("%d", &n) != 1) {
return -1;
}
for (x = 1; x * x <= n; x++) {
for (y = x; x * x + y * y < n; y++);
if (x * x + y * y == n) {
printf ("%d %d\n", x, y);
if (!solution) {
solution = true; // 标记有解
}
}
}
if (!solution) {
printf("No Solution");
}
return 0;
}
2. 提交结果
三、代码优化
1. 代码实现
#include <stdio.h>
// #include <stdbool.h> 少用一个头文件
int main(void) {
unsigned int n, x, y;
unsigned int solution = 0;
if (scanf("%d", &n) != 1) {
return -1;
}
for (x = 1; x * x <= n; x++) {
for (y = x; x * x + y * y < n; y++);
if (x * x + y * y == n) {
printf ("%d %d\n", x, y);
solution++; // 判断转为自增
}
}
if (!solution) {
printf("No Solution");
}
return 0;
}