美文网首页
JAVA基础001【水仙花数】

JAVA基础001【水仙花数】

作者: Artfox丶艺狸 | 来源:发表于2019-04-21 20:55 被阅读0次

这是JAVA基础系列的第一篇,就从简单的水仙花数开始吧!
什么是水仙花数呢?这里引用下百度百科里面的定义吧!

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

既然如此,我们也就知道了水仙花数的取值范围:100-999
这是一个连续递增的范围,那么也就是使用循环来完成即可,常用的就是for循环了,当然使用while和do-while 其实也是没有问题的,甚至你可以用递归!

那么剩下的问题就是怎么计算的问题,计算前我们需要取出个位,十位和百位上的数字,以153为例,个位呢相对简单,153除以10的余数就是了,那么十位呢?可以先除以10在取余:153/10 = 15,15除以10的余数就是十位,百位就是直接除以100就可以了,是100的几倍就是几,接下来,写代码:

    /**
     * 判断水仙花数
     *
     * @param num 一个3位数
     * @return
     */
    public static boolean isNarcissisticNumber(int num) {

        // 位数校验,一般不需要做
        if (num < 100 || num > 999) {
            return false;
        }

        int onesPlace = num % 10;
        int tenPlace = num / 10 % 10;
        int hundredsPlace = num / 100;

        int result = onesPlace * onesPlace * onesPlace
                + tenPlace * tenPlace * tenPlace
                + hundredsPlace * hundredsPlace * hundredsPlace;

        // 如果得到的数等于原来的数,则这个数是水仙花数
        return result == num;
    }

测试方法

    public static void main(String[] args) {

        for (int i = 100; i <= 999; i++) {
            if (isNarcissisticNumber(i)) {
                System.out.println(i);
            }
        }
    }

输出的结果有:153、370、371、407

扩展延伸

水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。

附:其他位数的自幂数名字
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数

我们也可以通过分解的方式去计算其他的自幂数

相关文章

  • JAVA基础001【水仙花数】

    这是JAVA基础系列的第一篇,就从简单的水仙花数开始吧!什么是水仙花数呢?这里引用下百度百科里面的定义吧! 水仙花...

  • 水仙花问题 -- Java描述

    水仙花问题 -- Java描述 题目: 编程求出 100~999 的所有的水仙花数(所谓“水仙花数”是指一个3位数...

  • Java案例-求出所有的水仙花数

    Java案例 求出所有的水仙花数 案例分析 输出水仙花数,所谓的水仙花数是指一个3位数,其各个位数立方和等于其本身...

  • 算法题目-水仙花数

    题目: 打印出所有的水仙花数 水仙花数 水仙花数(Narcissistic number)也被称为超完全数字不变...

  • JS代码题15——水仙花数

    给出n,找到所有的n位十进制水仙花数。 样例: 首先,什么是水仙花数? 在数论中,水仙花数(Narcissisti...

  • Rust语言编程实例100题-013

    Rust语言编程实例100题-013 题目:经典水仙花数问题。打印出所有的"水仙花数",所谓"水仙花数"是指一个三...

  • Java 复习题

    1.水仙花数 打印出100-999所有的“水仙花数”。 思路: 水仙花数是指一个 n 位数 ( n≥3 ),它的每...

  • 水仙花数——Python

    水仙花数打印出 100-999 所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数 字立方和等于该数本身...

  • 【Java基础】-案例学习

    案例1:在控制台输出所有的“水仙花数” 什么是水仙花数:1.水仙花数是一个三位数,如:111,222,333,37...

  • Python 练习作业 001

    #练习 '''从控制台输入一个三位数,如果是水仙花数就打印“是水仙花数”,否则打印“不是水仙花数”153=1^3...

网友评论

      本文标题:JAVA基础001【水仙花数】

      本文链接:https://www.haomeiwen.com/subject/cmzjgqtx.html