用c语言编程输出方程x2+y2+z2=1989的所有正整数解,高手帮忙,谢谢

如题所述

x2是指x的平方,还是2x,还是x2就是变量?
一个简单易懂的方法,不考虑查询速度
int x2,y2,z2;
x2=y2=z2=0;

for (x2 = 0;x2<=1989;x2++)
{
for(y2 = 0 ;y2<=1989;y2++)

{

for(z2 =;z2<=1989;z2++)

{

if( 1989 == (x2+y2+z2))

{
printf("x2=%d,y2=%d,z2=%d \n",x2,y2,z2);

}

}
}
}
如果是指的平方
int x,y,z;
x=y=z=0;

for (x = 0;x*x<=1989;x++)
{
for(y = 0 ;y*y<=1989;y++)
{
for(z =0;z*z<=1989;z++)
{
if( 1989 == (x*x+y*y+z*z))
{
printf("x=%d,y=%d,z=%d \n",x,y,z);
}
}
}
}
就写这两种情况吧。没试验过。不过大体思路就是这样了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-16

刚刚帮你写了一个。

希望帮助到你!


源代码:

#include "stdio.h"

//x2+y2+z2=1989

void main()

{

int x,y,z;

for(x=1;x<=1987;x++)

for(y=1;y<=(1989-x*x-1);y++)

for(z=1;z<=(1989-x*x-y*y);z++)

if((x*x+y*y+z*z)==1989)

{

printf("1989=%d^2+%d^2+%d^2\n",x,y,z);

printf("x=%d,y=%d,z=%d\n\n",x,y,z);

}

}

试运行如图:

第2个回答  2012-11-16
最简单的方法 用一个三层的循环 然后从1 一直遍历正整数
打印出x y z的值

下面是程序
#include <stdio.h>
int main(void)
{
int i , j ,k;
for(i = 0;i< 44 ; i++)
{
for(j = 0; j <44;j++)
{
for(k =0; k <44;k++)
{
if(i*i + j*j +k*k ==1989)
{
printf("x=%d,y=%d,z=%d\n",i,j,k);
}
}
}
}
return 0;
}

下面是结果
x=0,y=15,z=42
x=0,y=30,z=33
x=0,y=33,z=30
x=0,y=42,z=15
x=2,y=31,z=32
x=2,y=32,z=31
x=4,y=23,z=38
x=4,y=38,z=23
x=7,y=28,z=34
x=7,y=34,z=28
x=9,y=12,z=42
x=9,y=42,z=12
x=10,y=17,z=40
x=10,y=40,z=17
x=12,y=9,z=42
x=12,y=18,z=39
x=12,y=39,z=18
x=12,y=42,z=9
x=15,y=0,z=42
x=15,y=42,z=0
x=16,y=17,z=38
x=16,y=38,z=17
x=17,y=10,z=40
x=17,y=16,z=38
x=17,y=26,z=32
x=17,y=32,z=26
x=17,y=38,z=16
x=17,y=40,z=10
x=18,y=12,z=39
x=18,y=24,z=33
x=18,y=33,z=24
x=18,y=39,z=12
x=23,y=4,z=38
x=23,y=26,z=28
x=23,y=28,z=26
x=23,y=38,z=4
x=24,y=18,z=33
x=24,y=33,z=18
x=26,y=17,z=32
x=26,y=23,z=28
x=26,y=28,z=23
x=26,y=32,z=17
x=28,y=7,z=34
x=28,y=23,z=26
x=28,y=26,z=23
x=28,y=34,z=7
x=30,y=0,z=33
x=30,y=33,z=0
x=31,y=2,z=32
x=31,y=32,z=2
x=32,y=2,z=31
x=32,y=17,z=26
x=32,y=26,z=17
x=32,y=31,z=2
x=33,y=0,z=30
x=33,y=18,z=24
x=33,y=24,z=18
x=33,y=30,z=0
x=34,y=7,z=28
x=34,y=28,z=7
x=38,y=4,z=23
x=38,y=16,z=17
x=38,y=17,z=16
x=38,y=23,z=4
x=39,y=12,z=18
x=39,y=18,z=12
x=40,y=10,z=17
x=40,y=17,z=10
x=42,y=0,z=15
x=42,y=9,z=12
x=42,y=12,z=9
x=42,y=15,z=0
第3个回答  2012-11-16
//很简单
#include <stdio.h>
#include <math.h>
void main()
{
int x,y,z,MAX,temp;
MAX=(int)sqrt(1989);
for(x=1;x<=MAX;x++)
for(y=1;y<=MAX;y++)
{
temp=1989-x*x-y*y;
z=sqrt(temp);
if(temp==z*z)
printf("%d %d %d\n",x,y,z);
}

}本回答被提问者和网友采纳
第4个回答  2012-11-16
//这题目很简单,LZ动手写写吧
#include <stdio.h>
#include <math.h>
void main()
{
int x,y,z,MAX,temp;
MAX=(int)sqrt(1989);
for(x=1;x<=MAX;x++)
for(y=1;y<=MAX;y++)
{
temp=1989-x*x-y*y;
z=sqrt(temp);
if(temp==z*z)
printf("%d %d %d\n",x,y,z);
}

}