主题:三位数有水仙花数吗?
mudwzq
[专家分:80] 发布于 2007-10-24 21:09:00
一道求三位数的水仙花数的问题,也就是要求一个数的个位数,十位数,百位数,三个数的平方和等于这个数本身,下面是我编的代码,帮忙看下,程序可以编译,但执行后却没有输出值,为什么?是代码错了,还是三位数里根本没有水仙花数?
class Flower
{
boolean IsFlower(int i)
{
int g,s,b;
g=i%10; //个位数
s=i%100/10; //十位数
b=i/100; //百位数
return ((g*g+s*s+b*b)==i);
}
}
class Test
{
public static void main(String[] args)
{
Flower fl=new Flower();
for(int i=100;i<1000;i++)
{
if(fl.IsFlower(i))
{
System.out.println(i);
}
}
}
}
回复列表 (共10个回复)
沙发
major361 [专家分:280] 发布于 2007-10-24 21:50:00
应为根本不存在这样的数
999的时候g*g+s*s+b*b的值为243
所以从244到999的g*g+s*s+b*b不可能等于本身
且100-243中也不存在水仙花数
所以没有结果输出
板凳
haoboy0817 [专家分:880] 发布于 2007-10-24 22:15:00
哈哈!!!
哥们真逗,水仙花数指
各个数位的数的立方和等于该数
你那种数当然不存在拉!!!!
快改下试试把!!!!
3 楼
我要飞飞飞 [专家分:180] 发布于 2007-10-24 22:29:00
g=i%10; //个位数
s=i%100/10; //十位数
b=i/100; //百位数
改为:
g=i%10; //个位数
s=(i%100-g)/10; //十位数
b=(i-s)/100; //百位数
4 楼
我要飞飞飞 [专家分:180] 发布于 2007-10-24 22:30:00
主类应该定义为公有的
5 楼
我要飞飞飞 [专家分:180] 发布于 2007-10-24 22:38:00
return ((g*g+s*s+b*b)==i);
这一句应改为 if((g*g+s*s+b*b)==i)
int f=i;
return f;
6 楼
我要飞飞飞 [专家分:180] 发布于 2007-10-24 22:42:00
对不起 上面的 我说错了
7 楼
daifei4321 [专家分:2590] 发布于 2007-10-24 22:44:00
水仙花数是立方.153就是一个.153=5*5*5+3*3*3+1*1*1
8 楼
major361 [专家分:280] 发布于 2007-10-25 08:46:00
up...
9 楼
sjhlovejava [专家分:1690] 发布于 2007-10-25 10:09:00
public class DaffodilNum {
public static boolean isDaffodilNum(int inte){
int third;
int second;
int first;
third = inte/100;
second = inte%100/10;
first = inte%10;
return ((int)(Math.pow(third, 3)+Math.pow(second, 3)+Math.pow(first, 3)) == inte);
}
public static void main(String[] args) {
for(int i=100;i<1000;i++)
{
if(isDaffodilNum(i))
{
System.out.println(i);
}
}
}
}
运行结果:
153
370
371
407
10 楼
mudwzq [专家分:80] 发布于 2007-10-25 10:40:00
[quote]哈哈!!!
哥们真逗,水仙花数指
各个数位的数的立方和等于该数
你那种数当然不存在拉!!!!
快改下试试把!!!!
[/quote]
原来如此,刚学,不太懂什么是水仙花数,就看书上题目是这样的,看来是本盗版书,谢谢了!代码没错就好
我来回复