java 水仙花数问题(java50道经典编程题)

题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
这个题目还是比较简单的。这个题目的关键点在于分解出每个数的个位,十位,百位。而后再执行一个判断。我们在外层用for循环来控制。废话不多直接上代码:

//水仙花数
public class Num_daffodils {
    public static void main(String args[]) {
    	for(int i = 100;i<=999;i++) {
    		int q = i/100; //百位
    		int w = (i%100)/10; //十位
    		int e =  i%10;
    		int a = (int)Math.pow(q, 3);
    		int s = (int)Math.pow(w, 3);
    		int d = (int)Math.pow(e, 3);
    		if(i == (a+s+d))
    		{
    			System.out.println("水仙花数有"+i);
    		}
    	}
    }
}

可能大家不知道Math.pow();这里我就不多费笔墨了。
结果如下:

在这里插入图片描述
其实获取数字的各个位数的方法还有很多我上面的程序只是其中一部分。
然后我们老规矩看看大神代码:

/**
	 * 水仙花数
	 */
	public static void no3() {
		for(int i = 100;i < 1000;i++) {
			//取出每一个数字
			int bai = i / 100;
			int shi = (i%100)/10;
			int ge = i % 10;//10^3
			if(Math.pow(bai, 3)+Math.pow(shi, 3)+Math.pow(ge, 3) == i) {
				 System.out.println("水仙花数有"+i);
			}
		}
	}

这次大神只是没有把计算的值付给一个中间变量,可能这也是编码习惯的问题吧,我比较喜欢把计算的数值赋值给一个变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值