a.水仙花数是一个三位数
b.水仙花数的个位,十位,百位的数字立方和等于原数
123 不是水仙花数 371 是水仙花数 2.分析a.三位数的个位数字如何求?
371 1就是原始数字对10进行取余(取模)运算的结果
371 % 10 = 1
b.三位数的十位如何求?
371 7通过除以10,可以将7移动到个位上
371 / 10 = 37
37通过对10进行取余运算可以得到最后一位的值7
37 % 10 = 7
总:371 / 10 % 10 = 7
c.三位数的百位如何求?
371 3就是原始数字除以100的结果
d.如何求任意数字指定位上的数值?
先使用整数 *** 作将要求的数字移动到个位上,在使用取余 *** 作取出最后一位上的值
e.g
12345
先整除100得到123,在对10取余得到3
3.源码package cscn;
public class Example {
public static void main(String[] args) {
int count = 0;
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 == i) {
System.out.println(i);
count++;
}
}
System.out.println("水仙花共有:" + count + "个");
}
}
/*注释部分
利用Math类中的Math.pow(底数,几次方)方法改进if语句中的条件判断语句
e.g
int i=Math.pow(2,3)
表示2的3次方
将ge * ge * ge + shi * shi * shi + bai * bai * bai == i
改为Math.pow(ge, 3) + Math.pow(shi, 3) + Math.pow(bai, 3) == i
这样你的代码是不是就更高级了呢?
*/
4.扩展
从控制台输入一个数判断该数是否是水仙刷数,如果是则按照“***是水仙花数”的格式输出,如果不是则在控台输出“***不是水仙花数”。
package cscn;
import java.util.*;
public class Random {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一位三位数:");
int i = sc.nextInt();
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
if (Math.pow(ge, 3) + Math.pow(shi, 3) + Math.pow(bai, 3) == i) {
System.out.println(i + "是水仙花数");
} else {
System.out.println(i + "不是水仙花数");
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)