java,已知x!+y!+z!=xyz,求x,y,z

WillardLife 2011-10-02 02:44:00
x,y,z是1-9之间的数字。我自己写了一个,不知道哪出错了,求解。。

package erfenfaqiujie;

public class fsdd {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 求 x!+y!+z!=xyz的自然根。
int x,y,z;
double x1=1,y1=1,z1=1;

for(int i=100;i<=999;i++){
x=i/100;
y=(i/10)%10;
z=i%10;

for(int j=1;j<=x;j++){
x1*=j;
}
for(int k=1;k<=y;k++){
y1*=k;
}
for(int l=1;l<=z;l++){
z1*=l;
}

if(x1+y1+z1==i)
System.out.println(i);

}
}
}





菜鸟求指点。
...全文
139 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WillardLife 2011-10-02
  • 打赏
  • 举报
回复
更正如下:

package erfenfaqiujie;

public class fsdd {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 求 x!+y!+z!=xyz的自然根。
int x,y,z;
double x1=1,y1=1,z1=1;

for(int i=123;i<=999;i++){
x=i/100;
y=(i/10)%10;
z=i%10;

for(int j=1;j<=x;j++){
x1*=j;
}
for(int k=1;k<=y;k++){
y1*=k;
}
for(int l=1;l<=z;l++){
z1*=l;
}

if(x1+y1+z1==i)
System.out.println(i);
x1=1; // 这里要加上,否则每次算阶乘就出错!
y1=1;
z1=1;

}
}
}


WillardLife 2011-10-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cbxjj 的回复:]

double x1=1,y1=1,z1=1;
放到循环里面
[/Quote]

嗯,可以了,找到解决方法了,每次循环完了,那个阶乘没一直累加上了,导致程序没有结果,感谢回答。

剑神一笑 2011-10-02
  • 打赏
  • 举报
回复
double x1=1,y1=1,z1=1;
放到循环里面

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧