案例:水仙花
tip:
什么是水仙花数?
水仙花是一个三位数,水仙花数的个位、十位、百位的数字立方和等于原数
123不是水仙数,1、2、3各自的立方和相加为36,不等于123
371是水仙数,3、7、1各自的立方和相加为371
须知:(以数字371为例)
①三位数的个位数字如何求
1就是原始数字对10进行取余运算的结果,371%10=1
②三位数的百位数字如何求
3就是原始数字除以100的结果(整除),371/100=3
③三位数的十位数字如何求
371通过除以10,可以将7移动到个位上(整数),371/10=37
37通过对10进行取余运算可以得到最后一位的值7,37%10=7
综合下来就是371/10%10=7
④思考:任意数字的指定位上的数值如何求
先使用整除操作将要求的数字移动到个位上,再使用取余操作取出最后一位上的值
123456789 先整除10000得到12345,再对10取余得到5
需求:在控制台输出所有的”水仙花数“
分析:
①输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束
for(int i = 100; i<=999;i+1) {……}
②不是每个三位数都是水仙花数,因此需要判断,满足条件的数字才进行输出
if(执行的限制条件) {……}
③判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等
if( ? + ? + ? == 原数 ) { 输出原数 }
④在计算之前获取三位数中每个位上的值
int a = 原数的个位;
int b = 原数的十位;
int c = 原数的百位;
if(a*a*a + b*b*b + c*c*c == 原数) {
输出原数
}
案例:统计
需求:统计“水仙花数”一共有多少个,并在控制台输出个数
分析:
①定义变量count,用于保存“水仙花数”的数量,初始值为0
int count = 0;
②在判定水仙花数的过程中,满足条件不再输出,更改为修改count的值,使count + 1
if(a*a*a+b*b*b+c*c*c == 原数) {
count++;
}
③打印输出最终结果
System.out.println("水仙花数共有:" +count + "个");