本题要求对任意给定的正整数N,求方程X2+Y2=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
问题分析
定义一个flag作为有无答案的标识量,为0表示无答案,为1表示有答案。该方程为圆的方程可知x与y最大不超过n的平方根,定义循环开始查找,直到x与y满足方程且x<j;满足的值直接输出,同时使flag=1表示找到了至少一组答案。在判断所有的可能的答案后判断flag的值,根据flag的值判是否有答案
代码实现
#include<stdio.h>
#include<math.h>
int main(){
int n,flag=0;
scanf("%d",&n);
for(int i=1;i<=sqrt(n);i++){
for(int j=0;j<=sqrt(n);j++){
if(i*i+j*j==n&&i<j){
printf("%d %d\n",i,j);
flag=1;
}
}
}
if(flag==0){
printf("No Solution");
}
return 0;
}
该博客介绍了一种寻找方程X2+Y2=N所有正整数解的方法。通过循环遍历不超过N平方根的整数,检查每一对组合是否满足条件,并输出解。如果找不到解,则输出NoSolution。提供的C语言代码实现了这一逻辑,可用于处理不超过10000的正整数N。
3299

被折叠的 条评论
为什么被折叠?



