用c语言进行编程:本题要求对任意给定的正整数N,求方程X 2 +Y 2 =N的全部正整数解。 输入格式: 输入在一行中给出正整数N(≤10000)。 输出格式: 输出方程X 2 +Y 2 =N的全部正整数解,其中X≤Y。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。如果没有解,则输出No Solution。
时间: 2023-06-11 17:06:30 浏览: 118
c代码-C语言三个数从小到大排序/输出: 任意输入 3 个整数,编程实现对这 3 个整数由小到大进行排序。 冒泡排序的动画 https://haokan.baidu.com/v?vid=8080732080990475789&pd=bjh&fr=bjhauthor&type=video
以下是用C语言编写的解法:
```c
#include <stdio.h>
#include <math.h>
int main()
{
int n;
scanf("%d", &n);
int flag = 0; // 标记是否存在解
for (int i = 0; i <= sqrt(n); i++) {
int temp = n - i * i;
int j = sqrt(temp);
if (j * j == temp && i <= j) {
printf("%d %d\n", i, j);
flag = 1;
}
}
if (!flag) {
printf("No Solution\n");
}
return 0;
}
```
首先读入正整数N,然后从0到sqrt(N)依次枚举i,计算出j = sqrt(N - i^2),判断j是否满足j^2 = N - i^2,如果满足,则输出解(i, j)。最后判断是否存在解,如果不存在则输出"No Solution"。
阅读全文