[英]Error in C program to find integer triplets (x,y,z) such that n^x + n^y = n^z for given range of n
[英]Sum of Squares Program in C with equation z = x^2 + y^2
我正在尝试编写一个程序,该程序查找并写出所有对正整数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循环。 我不确定该怎么做,我们将不胜感激。
#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");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.