Java输出水仙花数及相关应用

水仙花数

什么是水仙花数?

① 水仙花数是一个三位数

 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+"个数");
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java程序设计》课程实验指导书程序代码(答案)(实验二),个人原创,仅供参考与交流。 希望多多交流,共同进步! 实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。(闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.编写Java Appet 程序打印 “水仙花” 数 (它的个、十、百位数字的立方的和等于该数本身,如:153=1^3+5^3+3^3) 3. 编写Java Application程序,分别用do-while和for循环计算1+1/2!+1/3!+1/4!...的前20项和 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)编写Java Applet, 在public void paint(Graphics g)方法中加入实现要求功能的代码, 主要步骤是:从100到1000循环,判断每个数是否符合水仙花数的特点,是则输出之。 3.编译运行程序,观察输出结果是否正确。 五、自做实验 1. 输出100以内的所有素数。 提示: 逐个判断小于a的每个正整数x,第二重循环针对x,判断其是否是质数。 2.将所输入之正整数,以二、八、十六进制表示出来。 提示: 可写三个方法分别计算输出二、八、十六进制表示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值