需求:在控制台输出所有的"水仙花数"
什么是“水仙花数" ?
-
水仙花数是一个三位数
111 222 333 370 371 520 999
-
水仙花数的个位、十位、百位的数字立方和等于原数
例如:123 1^3 +2^3 + 3^3 = 1+ 8 +27 = 36 != 123 不是水仙花数
371 3^3 + 7^3 + 1^3 = 27 + 343 + 1 = 371 = 371 是水仙花数
分析:
-
三位数的个位数字如何求
371 1就是原始数字对10进行取余运算的结果 371 % 10 = 1
-
三位数的百位数字如何求
371 3就是原始数字除以100的结果(整除)
-
三位数的十位数字如何求
371 371通过除以10,可以将7移动到个位上(整数)
37通过对10进行取余运算可以得到最后一位的值7
371 / 10 = 37
37 % 10 = 7
371 / 10 % 10 = 1
-
思考:任意数字的指定位上的数值如何求
先使用整数操作将要求的数字移动到个位上,再使用取余操作取出最后一位上的值
123456789 先整除10000得到12345,再对10取余得到5
public static void main(String[] args) {
//1. 输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束
for (int i = 100; i <=999 ; i++) {
//2. 在计算之前获取三位数中每个位上的值
int a = i/100%10; //bai
int b = i/10%10; //shi
int c = i%10; //ge
//3. 判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等
if (a*a*a+b*b*b+c*c*c==i){
//4. 输出满足条件的数字就是水仙花数
System.out.println(i);
}
}
}