回 帖 发 新 帖 刷新版面

主题:三位数有水仙花数吗?

一道求三位数的水仙花数的问题,也就是要求一个数的个位数,十位数,百位数,三个数的平方和等于这个数本身,下面是我编的代码,帮忙看下,程序可以编译,但执行后却没有输出值,为什么?是代码错了,还是三位数里根本没有水仙花数?
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个回复)

沙发

应为根本不存在这样的数
999的时候g*g+s*s+b*b的值为243

所以从244到999的g*g+s*s+b*b不可能等于本身

且100-243中也不存在水仙花数
所以没有结果输出

板凳

哈哈!!!
哥们真逗,水仙花数指
各个数位的数的立方和等于该数
你那种数当然不存在拉!!!!
快改下试试把!!!!

3 楼

g=i%10;        //个位数
s=i%100/10;           //十位数
b=i/100;        //百位数
改为:
g=i%10;        //个位数
s=(i%100-g)/10;           //十位数
b=(i-s)/100;        //百位数

4 楼

主类应该定义为公有的

5 楼

return ((g*g+s*s+b*b)==i);
这一句应改为  if((g*g+s*s+b*b)==i)
int f=i;
return f;

6 楼

对不起  上面的  我说错了

7 楼

水仙花数是立方.153就是一个.153=5*5*5+3*3*3+1*1*1

8 楼

up...

9 楼

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 楼

[quote]哈哈!!!
哥们真逗,水仙花数指
各个数位的数的立方和等于该数
你那种数当然不存在拉!!!!
快改下试试把!!!!

[/quote]

原来如此,刚学,不太懂什么是水仙花数,就看书上题目是这样的,看来是本盗版书,谢谢了!代码没错就好

我来回复

您尚未登录,请登录后再回复。点此登录或注册