Java基础(习题)---输出所有的水仙花数,并统计个数

Java基础(习题)---输出所有的水仙花数,并统计个数,第1张

1.什么是水仙花数?

a.水仙花数是一个三位数

b.水仙花数的个位,十位,百位的数字立方和等于原数

123        不是水仙花数 371                 水仙花数 2.分析

a.三位数的个位数字如何求?

371      1就是原始数字对10进行取余(取模)运算的结果 

                                37% 10 = 1

b.三位数的十位如何求?

371      7通过除以10,可以将7移动到个位上        

                                371 / 10 = 37

            37通过对10进行取余运算可以得到最后一位的值7        

                                 3% 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 + "不是水仙花数");
		}
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/737437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存