用java计算三位水仙花数(计算所有三位水仙花数)

水仙花数简介

水仙花数指的是一个三位数,该三位数每个数位上的数字的立方和等于该数本身,且不包含前导零的数字。例如,153是一个水仙花数,因为13+53+33=153。

用java计算三位水仙花数(计算所有三位水仙花数)

计算机科学中经常用到水仙花数,它是一个基本而且简单的数学问题,可以用来学习以及展示很多算法思想。

使用Java计算水仙花数

使用Java编程可以快速计算三位水仙花数,下面是一个简单的代码示例:

public class narcissisticNumber {
    public static void main(String[] args) {
        for (int i = 100; i <= 999; i++) {
            int ones = i % 10;
            int tens = i / 10 % 10;
            int hundreds = i / 100;
            if (i == ones * ones * ones + tens * tens * tens + hundreds * hundreds * hundreds) {
                System.out.println(i + "是水仙花数");
            }
        }
    }
}

代码中,我们使用for循环从100到999枚举三位数,然后用模运算和除法运算获取每个数的个位、十位和百位,分别计算它们的立方的和,与该数进行比较,如果相等就输出该数为水仙花数。

Java代码的优化

以上代码已经能够正确计算三位水仙花数,但是它还有一些可以优化的地方。过多的计算增加了时间复杂度,因此我们可以减少循环次数,只检查有可能是水仙花数的数字。例如,我们可以只枚举100到299,因为三位数中最大的水仙花数是999,999的个位、十位和百位的立方和是729,不可能超过999,因此不必检查300到999。

此外,我们可以使用StringBuilder来优化输出效率。StringBuilder是一个可变字符串类,能够快速地进行字符串拼接。下列代码对以上进行了优化:

public class narcissisticNumber {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 100; i <= 299; i++) {
            int ones = i % 10;
            int tens = i / 10 % 10;
            int hundreds = i / 100;
            if (i == ones * ones * ones + tens * tens * tens + hundreds * hundreds * hundreds) {
                stringBuilder.append(i).append("是水仙花数n");
            }
        }
        System.out.println(stringBuilder.toString());
    }
}

在循环结束后,使用StringBuilder的toString()方法将拼接好的字符串输出到控制台。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/javapeixunkm9.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月25日 上午3:12
下一篇 2023年4月25日 上午3:12

猜你喜欢