用java写出水仙花数(java判断水仙花数代码)

水仙花数是什么

水仙花数,又称阿姆斯壮数,指各位数立方和等于该数本身的数。比如153,它的各位数立方和等于1^3 + 5^3 + 3^3 = 153,所以153是水仙花数。

用java编写水仙花数程序

我们可以用Java编写一个求解水仙花数的程序。首先,我们需要明确判断一个数是否为水仙花数的依据。可以采用以下步骤:

  1. 将这个数按位拆分,可以使用%i和/%操作符。
  2. 对每个位数进行立方运算并累加。
  3. 判断累加结果是否等于该数本身,如果相等则该数为水仙花数,否则不是。

以下是一个简单的Java程序:

```
public class NarcissisticNumber {
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {
if (isNarcissistic(i)) {
System.out.println(i);
}
}
}

public static boolean isNarcissistic(int num) {
int sum = 0;
int origin = num;
while (num != 0) {
int digit = num % 10;
sum += digit * digit * digit;
num /= 10;
}
return sum == origin;
}
}
```

在这个程序中,我们循环遍历所有三位数,然后调用isNarcissistic()方法判断它是否为水仙花数。isNarcissistic()方法依据以上步骤进行判断。

优化水仙花数程序

以上程序已经可以正确地求解水仙花数,但是我们可以进行一些优化来提高效率。首先,我们可以通过将位数立方的结果存储在一个数组中来避免重复计算。同样,我们还可以将不必要的操作移除掉,例如计算出原始数值后不再使用。

以下是优化后的Java程序:

```
public class NarcissisticNumberOptimized {
public static void main(String[] args) {
int[] digits = {0, 1, 8, 27, 64, 125, 216, 343, 512, 729};
for (int i = 100; i < 1000; i++) {
if (isNarcissistic(i, digits)) {
System.out.println(i);
}
}
}

public static boolean isNarcissistic(int num, int[] digits) {
int sum = 0;
while (num != 0) {
int digit = num % 10;
sum += digits[digit];
num /= 10;
}
return sum == num;
}
}
```

在这个程序中,我们使用了一个digits数组来存储各位数的立方结果。同时,我们可以将原始数值存储在一个变量中,同时不再使用num变量。

用java写出水仙花数(java判断水仙花数代码)

这样,我们的程序可以更加高效地检查水仙花数,从而提高程序性能。

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

郑重声明:

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

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

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

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

(0)
上一篇 2023年4月24日 下午8:51
下一篇 2023年4月24日 下午8:51

猜你喜欢