水仙花数简介
水仙花数指的是一个三位数,该三位数每个数位上的数字的立方和等于该数本身,且不包含前导零的数字。例如,153是一个水仙花数,因为13+53+33=153。
计算机科学中经常用到水仙花数,它是一个基本而且简单的数学问题,可以用来学习以及展示很多算法思想。
使用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小时之内反馈信息。
如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!