令解水仙花数(个人扩展想象,写活一些)

题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和
等于该数本身。例如:153 是一个 "水仙花数 ",因为 153=1 的三次方+5 的三次方+3 的
三次方。
(扩展:水仙花是三位数或者更多位数,例如54748就是各位数的5次方相加的和)



@Test
public void testshuixianhua2() {

int num1, num2, num3;

for (int i = 101; i < 100000; i++) {
String temp = String.valueOf(i);
int lenth = temp.length();
char[] temp01 = temp.toCharArray();
int sum = 0;
for (int j = 0; j < lenth; j++) {
num1 = Integer.parseInt(String.valueOf(temp01[j]));
sum += Math.pow(num1, lenth);
}
if (sum == i) {
System.err.println("水仙花数" + "=" + sum);

}

}

}



打印:
水仙花数=153
水仙花数=370
水仙花数=371
水仙花数=407
水仙花数=1634
水仙花数=8208
水仙花数=9474
水仙花数=54748
水仙花数=92727
水仙花数=93084

原始的解法是:

int num1, num2, num3;
for (int i = 101; i < 1000; i++) {
num1 = i / 100;
num2 = (i / 10) % 10;
num3 = i % 10;
//System.err.println(num1 + "--" + num2 + "--" + num3);

if ((double) i == Math.pow(num1, 3) + Math.pow(num2, 3) + Math.pow(num3, 3)) {
System.err.println(i);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值