这是关于复数3的数字

问题描述 投票:0回答:1

那是我的代码有错误,我对此错误一无所知请注意,我只能在“ 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; 
}
c for-loop if-statement while-loop
1个回答
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; 
}
© www.soinside.com 2019 - 2024. All rights reserved.