如何快速理解java水仙花数 详细思路讲解

该博客专为小白提供,如是有基础可跳过中间部分,之间观看最后部分(中间废话我都觉得多了点

 

一、首先,我们要了解水仙花数是一个什么概念的数。

        水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。 例如:1*1*1 + 5*5*5+ 3*3*3 = 153。

        三位的水仙花数共有4个:153,370,371,407;

        四位的四叶玫瑰数共有3个:1634,8208,9474;

        五位的五角星数共有3个:54748,92727,93084;

        六位的六合数只有1个:548834;

        七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;

        八位的八仙数共有3个:24678050,24678051,88593477;

        九位的九九重阳数共有4个: 146511208,472335975,534494836,912985153;

        十位的自幂数只有1个:4679307774

二、那么,我们该怎么用java形式的思路解出水仙花数呢?

        首先我们要清楚了解水仙花数的格式,例如三位数水仙花:153、370、371、407

         ca8bf60157c74defbdf376a8a9fd90f2.png

        这里我将使用for循环讲解如何解题。

        for循环的格式

for (int i=1;i<=5;i++){
    /*int i=1为定义初始体
    i<=5是该循环终止的条件,也就是当i循环到小于或等于5的时候停止循环
    i++为更新*/
}//注意:for关键字后面括号中的3个条件表达式必须用 ;(分号) 隔开

         这里我将讲解三位数水仙花的思路。

       1、我们要求三位的水仙花数,那取值区间将在100-10000之间,但并不包括10000,所以些第二个表达式时应留意。  for循环的初始表达式应该写为100,终止表达式为<10000。这样我们就确定了取值区间。代码如下:

for (int i=100;i<1000;i++){
//功能代码
}

       2、  在for循环中我们要写输出条件。也就是i循环到某个数时判定该数是不是水仙花数,我们该如何判定某个数是不是水仙花数,这就要回顾水仙花的格式了。例如(这里我将使用字母形式):i=a*a*a+b*b*b+c*c*c

        算数运算符都包括:加(+)、减(-)、乘(*)、除(/)、取模(%)、自增(++)、自减(–)、字符串连接符(+)

        这里我们将用到运算符 / 和 % 

//以第一个水仙花数153为例
/*提取个位数*/int a=i%10;//153%10=15.30,取余数3
/*提取十位数*/int b=i/10%10;//153除以10=15.3,15.3%10取余数5
/*提取百位数*/int c=i/100%10;//153除以100=1.53,1.53%10取余数1

        3、然后就是选择条件。

        这里我们将用到if判断

//if else语句语法

if(条件表达式){

//功能代码1

}else{

//功能代码2

}

        我们将写出水仙花的提取条件i=a*a*a+b*b*b+c*c*c(只是格式,和以下代码并无关联),所以在判断条件里就只用写:水仙花数=百位*百位*百位+十位*十位*十位+个位*个位*个位

         在功能代码区写输出即可

if (a*a*a+b*b*b+c*c*c==i){
     System.out.println(+i+" 是水仙花数");
            }

        

好了,教程到此结束,放上整段代码,仅供参考

package com.sanmu;

public class shuixianhuashu {
    public static void main(String args[]){
        for (int i=100;i<1000;i++){
            int a=i%10;
            int b=i/10%10;
            int c=i/100%10;

            if (a*a*a+b*b*b+c*c*c==i){
                System.out.println(i+"="+c+"*"+c+"*"+c+"+"+b+"*"+b+"*"+b+"+"+a+"*"+a+"*"+a+ "  ,他是水仙花数");
            }
        }
    }
}

c379978ced634087bf9fc60c45db664c.png

 

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三天不洗头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值