那是我的代码有错误,我对此错误一无所知请注意,我只能在“ for”,“ while”和“ if”中使用问题是:编写获取自然数“ n”的代码,然后尝试以某种方式查找x,y,z(自然数):n = x + y + z然后,如果x,y,z满足以下条件,则在输出中打印这三个数字,否则打印Not Found语句:
x = y ^ 2 + z ^ 2
((x或y或z)= i +(i + 1)+(i + 2)
这里我是自然数。就是这样然后,如果x,y,z满足以下条件,则在输出中打印这三个数字,否则打印Not Found语句:
x = y ^ 2 + z ^ 2
((x或y或z)= i +(i + 1)+(i + 2)
如果我是自然数。
((请注意,输入n使int变量足够并且不会溢出。)
输入
输入包含一行给出自然数的行。
输出
输出必须由三行组成,每行分别由小到大分别为x,y和z,或表达式Not Found。
示例
样本输入1
48
复制
样本输出1
2 6 40
复制
样本输入2
5
复制
样本输出2
未找到
#include <stdio.h>
Int main() {
int z,x,y,n;
scanf("%u",&n);
for(y=1;y<(n/3);y++) {
for(z=y;z<=((2*n)/3);z++) {
(x=(n-(y+z)));
if(x==((y*y)+(z*z))) {
if(((((y-3)%3)!=0)||(y==3))&&((((z-3)%3)!=0)||(z==3))&&((((x-3)%3)!=0)||(x==3))) {
continue;
}
printf("%d\n",y);
printf("%d\n",z);
printf("%d",x); return 0;
}
}
}
printf("Not found");
return 0;
}
这不正确,(if(x==((yy)+(zz)))
应该是if (x == ((y*y)+(z*z)))
或使用pow fnction
int main()
{
int z, x, y, n;
scanf("%u", &n);
for (y = 1; y < (n / 3); y++)
{
for (z = y; z <= ((2 * n) / 3); z++)
{
(x = (n - (y + z)));
if (x == ((y*y)+(z*z)))
{
if (((((y - 3) % 3) != 0) || (y == 3)) && ((((z - 3) % 3) != 0) || (z == 3)) && ((((x - 3) % 3) != 0) || (x == 3)))
{
continue;
}
printf("%d\n", y);
printf("%d\n", z);
printf("%d", x);
return 0;
}
}
}
printf("Not found");
return 0;
}