本题要求对任意给定的正整数N,求方程X
2
+Y
2
=N的全部正整数解。
输入格式:
输入在一行中给出正整数N(≤10000)。
输出格式:
输出方程X 2+Y 2
=N的全部正整数解,其中X≤Y。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。如果没有解,则输出No Solution。
#include "stdio.h"
int main()
{
int N,x,y;
scanf("%d",&N);
for(x=0;x<=N;x++)
{
for(y=0;y<=N;y++)
{
if(N==xx+yy)
{
printf("%d %d\n",x,y);
}
else
{
printf("No solution");
}
}
}
#include "stdio.h"
int main()
{
int N, x, y;
int flag = 0;
scanf("%d", &N);
for (x = 0; x <= N; x++)
{
for (y = 0; y <= N; y++)
{
if (N == x * x + y * y)
{
printf("%d %d\n", x, y);
flag = 1;
}
}
}
if (flag==0)
{
printf("No solution");
}
return 0;
}
if(N==xx+yy)
这一句应该写成if(x * x+y * y==N)
而且其中X≤Y。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。
这些条件要再实现一下。
望采纳!!
其中X≤Y
你的代码里没有体现出来
改成这样吧
#include "stdio.h"
int main()
{
int N,x,y;
int flg=0;
scanf("%d",&N);
for(x=0; x<=N; x++)
{
for(y=0; y<=N; y++)
{
if(N==x*x+y*y)
{
printf("%d %d\n",x,y);
flg++;
}
}
}
if(flg==0)
{
printf("No solution");
}
}
4 个问题
第一:xx+yy=N,没有没写乘号,
第二:else的位置写错了,题意是指没有解才输出,不是没有递增1就判断。
第三:X小于y没有使用到这个条件
第四:解法的逻辑不对,和第三点有关,外层应该y,而不是x
int main() {
int N, x, y, f = 0;
scanf("%d", &N);
for(x = 0; x <= N; x++) {
for(y = 0; y <= N; y++) {
f = 1;
if(N == x * x + y * y) {
printf("%d %d\n", x, y);
}
}
}
if(f == 0) {
printf("No solution");
}
}