计算水仙花数
什么是水仙花数
要计算水仙花数,首先我们要知道什么是水仙花数
① 水仙花数是一个三位数
例如:111 222 333
② 水仙花数的个位、十位、百位的数字立方和等于原数
例如:123 – 13+23+33=1+8+27=36**≠** 123(不是水仙花数)
153 – 13+53+33=1+125+27=153 = 153(是水仙花数)
好了,当我们弄懂了什么是水仙花数,就来分析一下怎么求出水仙花数?
分析如何获得水仙花数
① 输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束
for(int i=100; i<=999;i++) {...}
② 不是每个三位数都是水仙花数,因此需要判断,是否满足水仙花的第二个条件
if(判断语句) {...}
③ 判断条件是将三位数中的每个数值取出来,计算立方和后与原始数字进行比较是否相等
if(? + ? + ? == 原数) { 满足条件打印原数 }
分析完毕,现在主要问题就是怎么分别计算出个、十、百位上的值呢?
再分析如何获得个、十、百位上的值
-
怎么求个位数
- 153 3就是原始数字对10进行取余的运算的结果 ---- 153%10=3
-
怎么求百位数
- 153 1就是原始数字除以100的结果(整除) ---- 15 3 / 100 = 1
-
怎么求十位数
-
153 153通过除以10,可以将5移动到个位上(整除)---- 153 / 10 = 37
15通过对10取余就可以得到十位数上的5 ---- 37 % 10 = 7
-
代码示例
public class demo {
public static void main(String[] args) {
//由于水仙花数是三位数的,故使用循环遍历[100,1000)的整数
for(int i = 100; i < 1000; i++) {
//计算个位数
int a = i%10;
//计算十位数
int b = i/10%10;
//计算百位数
int c = i/10/10%10;
//判断是否满足三个数的立方加起来是原来的数的条件
if(a*a*a + b*b*b + c*c*c == i) {
//把满足条件的数打印在控制台
System.out.println(i);
}
}
}
}
运行结果:
153 370 371 407
这样就可以求出所有的水仙花数啦,无聊的小伙伴可以挨个计算一下(比如我就无聊的挨个用计算机算了一下。。。)