JAVA基础001【水仙花数】

这是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次幂数才称为水仙花数。

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容