题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和
等于该数本身。例如:153 是一个 "水仙花数 ",因为 153=1 的三次方+5 的三次方+3 的
三次方。
(扩展:水仙花是三位数或者更多位数,例如54748就是各位数的5次方相加的和)
打印:
水仙花数=153
水仙花数=370
水仙花数=371
水仙花数=407
水仙花数=1634
水仙花数=8208
水仙花数=9474
水仙花数=54748
水仙花数=92727
水仙花数=93084
原始的解法是:
等于该数本身。例如: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);
}
}