问题:
水仙花数定义:
- 一定是3位数
- 每一位的立方,加起来恰好是这个数本身,比如
153=1*1*1+5*5*5+3*3*3
寻找所有的水仙花数
解题思路:
因为定义中说明值水仙花数一定是三位数,所以做一个从100到999的循环:
for(int i=100;i<1000;i++)
然后需要获取这个三位数的每一位数
拿153举例:
个位数:对10取余即可得到个位数。153/10=15……3,即得到个位:3
十位数:十位数稍微复杂一些,先除以10,消去个位,得到二位数15,再对 这个二位数取余得到个位数,15%10=1……5得到十位:5
百位数:百位数相对简单,直接除以100,就得到了百位:153/100=1
然后对拿到的三个数进行计算,然后判断是否等于这个数本身即可,关于立方,可以用Math.pow(x,3)
,也可以用x*x*x
简单粗暴
完整代码:
public class Main {
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {
int gw = i % 10; //获得个位数
int sw = (i / 10) % 10; //获得十位数
int bw = i / 100; //获得百位数
if (gw * gw * gw + sw * sw * sw + bw * bw * bw == i)
System.out.println(i); //输出符合条件的水仙花数
}
}
}