方程式z中的平方和程序C = x ^ 2 + y ^ 2

时间:2018-10-01 00:27:55

标签: c

我正在尝试编写一个程序,该程序查找并写出所有成对的正整数x和 y使得x ^ 2 + y ^ 2 = z我想提示用户输入值z。 x和y 可以为零或全部为零。例如,如果z为25,则x和y为:

0,5; 3,4; 4、3; 5,0。

如果未找到这样的x和y,程序将写出“未找到”。该程序无法搜索 查找x和y的所有可能整数。对于给定的z值,它可以停止 当x ^ 2> z时搜索x。 (与y相同)。 我需要期望z为零,直到一个称为INT_MAX的值。

这是我到目前为止所拥有的:

#include<stdio.h>
#include<limits.h>

int main()
{   
 int x,y,z;

 printf("Enter a value for Z: \n");
 scanf("%d",&z);

 z = x*x + y*y;


 for(x = 0; x*x < z; ++x)
 {   
    printf("%d",&x);
 }

 for(y = 0; y*y < z; ++y)
{
printf("%d",&y); 
 }   

}

我的问题是我正在尝试编写某种循环,该循环将使x和y都等于零,然后将它们递增以形成x和y的所有可能组合,以获得用户输入的Z值在这里,我将它们放在两个不同的for循环中。我不确定该怎么办,将不胜感激。

1 个答案:

答案 0 :(得分:3)

#include<stdio.h>
#include<limits.h>

int main()
{   
    int x, y, z, zx, found;

    printf("Enter a value for Z: \n");
    scanf("%d", &z);


    found = 0;
    for(x = 0; x*x <= z; ++x)
    {
        zx = z - x*x;
        for(y = 0; y*y < zx; ++y);
        if (zx == y*y)
        {
            found += 1;
            printf("%d, %d;\t", x, y);
        }
    }

    if (found == 0)
        printf("No solutions have been found");
}