水仙花数
什么是水仙花数?
① 水仙花数是一个三位数
111 222 333 370 371 520 999
② 水仙花数的个位、十位、百位的数字的立方和等于原数
123 1^3^ + 2^3^ + 3^3^ = 1 + 8 + 21 = 36 != 123 不是水仙花数
371 3^3^ + 7^3^ + 1^3^ = 27 + 343 + 1 = 371 = 371
分析:
① 三位数的个位数字如何求
371 1就是原始数字对10进行取余运算的结果 371 % 10 = 1
② 三位数的百位数字如何求
371 3就是原始数字除以100的结果(整除) 371 / 100 = 3
③ 三位数的十位数字如何求
371 371通过除以10,可以将7移动到个位上(整除) 371 / 10 = 37
37通过对10进行取余运算可以得到最后一位的值7 37 % 10 = 7
371 / 10 % 10 = 7
④ 思考:对任意数字的指定位置上的数值如何求
先使用整除操作将要求的数字移动到个位上,再使用取余操作取出最后一位上的值
123456789 先整除10000得到12345,再对10取余得到5
public class PrintShuiXianHua{
public static void main(String[] args){
for(int i = 100; i<1000; i++){
//在计算之前获取每位数字
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
//判断条件是将三位数中的每个数值取出来,计算立方和与原数比较是否相等
if(ge*ge*ge + shi*shi*shi + bai*bai*bai){
//输出满足条件的数字就是水仙花数
System.out.println(i);
}
}
}
}
拓展案例:
有些情况下我们需要取得一个多位数值的每位数字,接下来我将通过java代码演示。
需求:
1.按照从大到小的顺序输出四位数中的个位+百位=十位+千位 的数字及个数
2.每行输出5个满足条件的数,之间用空格分隔
3.如:9999 9988 9977 9966 9955
分析:
① 四个数的个位如何求
9955 5就是原始数字对10进行取余运算的结果 9955 %10 = 5
② 四位数的十位如何求
9955 5就是原始数字除以10然后对10取余的结果(整除) 9955 / 10 % 10 = 5
③ 四位数的百位如何求
9955 9就是原始数字除以100然后对10取余的结果(整除) 9955 / 100 % 10 = 9
④ 四位数的千位数如何求
9955 9就是原始数字除以100然后对10取余的结果(整除) 9955 / 1000 = 9
具体实现如下:
public class PrintNumber{
public static void main(String[] args){
//定义一个计数器
int count = 1;
for(int i = 1000;i<10000;i++){
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
int qian = i/1000;
//判断个位加百位的和是否等于十位加千位的和,如果是,则输出
if((ge+bai)==(shi+qian)){
//判断当前是否为输出的第五个数,如果是,输出后换行
if(count % 5 == 0){
System.out.print(i+"\n");
}else{
System.out.print(i+" ");
}
count++;
}
}
System.out.println("共有"+count+"个数");
}
}