黑马程序员技术交流社区
标题:
阶乘问题,求大神看看哪里错了
[打印本页]
作者:
zheng72566
时间:
2015-5-26 09:43
标题:
阶乘问题,求大神看看哪里错了
1.求解方程 x!+y!+z!=xyz(如1!+4!+5!=145) 的自然数根(其中x,y,z,a都代表1~9之间的数字)。
class Lianxi
{
public static void main(String[] args)
{ int number=0,sum1=1,sum2=1,sum3=1;
for (int x=1; x<10; x++)
{
sum1=sum1*x;
for (int y=1;y<10;y++ )
{
sum2=sum2*y;
for (int z=1;z<10;z++ )
{
sum3=sum3*z;
number=sum1+sum2+sum3;
if (number==x*100+y*10+z)
{
System.out.println("X="+x+"\t"+"Y="+y+"\t"+"Z="+z);
}
}
}
}
}
}
复制代码
作者:
zheng72566
时间:
2015-5-26 09:46
编译没问题,执行不出结果
作者:
半世心修
时间:
2015-5-26 09:54
我勒个去 把范围设大一点
立马解决
10改成100看看
作者:
小悟空et
时间:
2015-5-26 10:57
z的第一次从1循环到9之后,因为sum3定义在循环外面,sum3的值在下次循环的时候会接着乘,就是会从9!开始,继续乘以1,乘以2.。。。。
好理解的方法,就是在x的循环中,对sum2和sum3重新赋值回1.在y的循环中对sum3重新赋值1
class Lianxi
{
public static void main(String[] args)
{ int number=0,sum1=1,sum2=1,sum3=1;
for (int x=1; x<10; x++)
{
sum1=sum1*x;
sum2=1;
sum3=1;
for (int y=1;y<10;y++ )
{
sum2=sum2*y;
sum3 = 1;
for (int z=1;z<10;z++ )
{
sum3=sum3*z;
number=sum1+sum2+sum3;
if (number==(x*100+y*10+z))
{
System.out.println("X="+x+"\t"+"Y="+y+"\t"+"Z="+z);
}
}
}
}
}
}
复制代码
作者:
志行
时间:
2015-5-26 11:25
楼上正解~~~~~
作者:
q617939894
时间:
2015-5-26 14:02
不错看看,学习了
作者:
791180016
时间:
2015-5-26 15:19
水军来学习
作者:
zheng72566
时间:
2015-5-26 16:11
谢谢大家
作者:
l598790586
时间:
2015-5-26 17:13
水军来学习
作者:
kmlitheima
时间:
2015-5-26 17:13
把功能抽取出来啊!
class JavaTest
{
public static void main(String[] args)
{
Fuction f=new Fuction();
for(int x=1;x<=9;x++)
for(int y=0;y<=9;y++)
for(int z=0;z<=9;z++)
if((f.function(x)+f.function(y)+f.function(z))==(100*x+10*y+z))
System.out.println("X="+x+"\t"+"Y="+y+"\t"+"Z="+z);
}
}
class Fuction
{
public int function(int j){
int sum=1;
if(j==0)
return 1;
else{
for(int i=1;i<=j;i++){
sum*=i;
}
return sum;
}
}
}
作者:
zheng72566
时间:
2015-5-27 12:11
小悟空et 发表于 2015-5-26 10:57
z的第一次从1循环到9之后,因为sum3定义在循环外面,sum3的值在下次循环的时候会接着乘,就是会从9!开始, ...
明白了,谢谢了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2