水仙花问题 -- Java描述
题目:
编程求出 100~999 的所有的水仙花数(所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身)。
举例:
153是“水仙花数”,因为:153 = 1^3 + 5^3 + 3^3。
思路:
题目中说求出 100~999 的所有“水仙花数”,其实如果没有给出 100~999 的限定,“水仙花数”还是求这个范围,因为水仙花数要满足“三位数”,所以就只有 100~999 的范围了。
所以我们可以把给出的三位数的个位、十位、百位分别拆分,并求其立方和(设为 n),若 n 与给出的三位数相等, 三位数为“水仙花数”,反之,则不是。
代码如下:
public class Test {
public static void main(String[] args) {
for (int n = 100; n < 1000; n++) { // 整数的取值范围
int i = n / 100; // 取得百位数
int j = n / 10 % 10; // 取得十位数,也可以写成 int j = (n-i*100)/10;
int k = n % 10; // 取得个位数, 也可以写成 int k = n-i*100-j*10
if (n == i*i*i + j*j*j + k*k*k) { //各位的立方和是否和原数n相等,相等则打印水仙花数
System.out.println("水仙花数为" + n);
}
}
}
}
输出结果如下:
image.png