X,Y,Z为正整数,输出满足条件X*X+Y*Y+Z*Z=2000的所有解
答案:3 悬赏:70 手机版
解决时间 2021-01-19 07:04
- 提问者网友:轮囘Li巡影
- 2021-01-19 03:45
X,Y,Z为正整数,输出满足条件X*X+Y*Y+Z*Z=2000的所有解
最佳答案
- 五星知识达人网友:长青诗
- 2021-01-19 04:37
用一个三重循环
#include
#include
int main()
{
int x;
x = (int)sqrt(2000.0);
for(int i = 0;i<=x;i++)
for(int j=0;j<=x;j++)
for(int k=0;k<=x;k++)
{
if(i*i + j*j + k*k==2000)
{
printf("%d %d %d\n",i,j,k);
}
}
return 0;
}追问没学过三重循环……追答没学过的意思是?for循环学过吧,在循环里面再套一个循环,很好理解啊
#include
#include
int main()
{
int x;
x = (int)sqrt(2000.0);
for(int i = 0;i<=x;i++)
for(int j=0;j<=x;j++)
for(int k=0;k<=x;k++)
{
if(i*i + j*j + k*k==2000)
{
printf("%d %d %d\n",i,j,k);
}
}
return 0;
}追问没学过三重循环……追答没学过的意思是?for循环学过吧,在循环里面再套一个循环,很好理解啊
全部回答
- 1楼网友:荒野風
- 2021-01-19 06:30
可以优化成两层循环 因为有了已知数2000,即2000/((x*x)+(y*y))开根后是整数就是合法的解然后输出
- 2楼网友:轮獄道
- 2021-01-19 05:28
#include
#include
int main()
{
int x = 0, y = 0, z = 0;
int tmp = (int)sqrt(2000);
for(x= 0; x< tmp; x++)
{
for(y= 0; y< tmp; y++)
{
for(z= 0; z < tmp; z++)
{
if ((x*x +y*y + z*z) == 2000)
printf("x:%d, y:%d, z:%d\n", x, y, z);
}
}
}
return 0;
}
#include
int main()
{
int x = 0, y = 0, z = 0;
int tmp = (int)sqrt(2000);
for(x= 0; x< tmp; x++)
{
for(y= 0; y< tmp; y++)
{
for(z= 0; z < tmp; z++)
{
if ((x*x +y*y + z*z) == 2000)
printf("x:%d, y:%d, z:%d\n", x, y, z);
}
}
}
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯