当前位置:首页 > 后端开发 > 正文

Java水仙花数代码如何写?

用Java编写水仙花数程序:遍历100-999,计算每位数字的立方和,若等于原数则输出,核心步骤包括数字拆分、幂运算和结果验证。

在Java中,水仙花数(Narcissistic Number)是指一个n位数,其各位数字的n次方之和等于该数本身,例如153 = 1³ + 5³ + 3³,以下是两种实现方法:

Java水仙花数代码如何写? 第1张

Java水仙花数代码如何写? 第2张

方法1:基础实现(仅三位数)

public class NarcissisticNumber { public static void main(String[] args) { System.out.println("三位数水仙花数:"); for (int num = 100; num < 1000; num++) { int digit1 = num / 100; // 百位 int digit2 = (num % 100) / 10; // 十位 int digit3 = num % 10; // 个位 // 计算立方和 int sum = digit1*digit1*digit1 + digit2*digit2*digit2 + digit3*digit3*digit3; if (sum == num) { System.out.println(num); } } } }

输出结果:

153

370

371

407

Java水仙花数代码如何写? 第3张

方法2:通用实现(任意位数)

public class NarcissisticNumber { public static void main(String[] args) { System.out.println("0-9999的水仙花数:"); for (int num = 0; num <= 9999; num++) { String numStr = Integer.toString(num); int n = numStr.length(); // 位数 int sum = 0; // 逐位计算n次方和 for (int i = 0; i < n; i++) { int digit = numStr.charAt(i) - '0'; sum += Math.pow(digit, n); } if (sum == num) { System.out.println(num); } } } }

输出结果:

0

1

2

3

4

5

6

7

8

9

153

370

371

407

1634

8208

9474

关键说明:

  1. 基础方法:直接数学运算,仅适用于三位数,效率高。
  2. 通用方法
    • 通过字符串转换获取数字位数
    • 使用Math.pow()计算幂次
    • 支持任意位数(示例范围0-9999)
  3. 特殊说明
    • 0-9是1位数水仙花数(数学定义)
    • 1634是四位数水仙花数(1⁴+6⁴+3⁴+4⁴=1634)

优化建议:

  • 大范围计算时,可缓存幂次结果提升性能
  • 通过Scanner接收用户输入的自定义范围
  • 使用BigInteger处理超大型数字(10位以上)

引用说明:水仙花数定义参考数论基本概念,代码实现基于Java标准数学运算。

0