这道题要想算出水仙花数需要三步:
1.计算给出数一共是多少位。 eg:153
2.求每一位都是几。 1 5 3
3.把每一位数字是几,位数的次幂算出来。 1^3+5^3+3^3=x
输出x。
已知本题需要求次幂,则需要求次幂函数Math.pow
首先,让给定数多次除以10,除以几次就是几位数。
现在count里面就存储了i的位数。
又因为不能更改i里面存储的数字,所以设置一个tmp=i用来替换i。
下一步我们需要同时完成步骤2和步骤3:
首先我们得知让i里存储的数字先%10取出其中一位然后取位数次幂,最后再/10无限次数重复直至数字为零,即可求出次数是不是水仙花数
注意:
这里的Math.pow函数返回值为double,而sum设定的是int,为了不强制转换用+=符号即可避免(上一章讲过。)
看Java的源代码:
按住ctrl+鼠标左键点到方法上即可查看这个方法的源代码。
最后就完成了这个题:
public static void main(String[] args) {
for (int i = 1; i < 999999; i++) {
int num = 0;
int tmp = i;
int count = 0;
int sum = 0;
while (tmp != 0) {
tmp = tmp / 10;
count++;
}
tmp = i;
while (tmp != 0) {
sum += Math.pow(tmp % 10, count);
tmp /= 10;
}
if (sum == i) {
System.out.println(i);
}
}
}