亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 判断阿姆斯特朗数(自幂数):for 循环与 while 循环实现

什么是阿姆斯特朗数?

阿姆斯特朗数(Armstrong Number,又称自幂数/水仙花数)是指一个 n 位数,其各位数字的 n 次幂之和等于该数本身。

数学表达:对于数字 x、y…z 共 n 位,满足:

xyz...z = xn + yn + ... + zn

阿姆斯特朗数示例:

0, 1, 4, 5, 9, 153, 371, 407, 8208, …

Java 判断指定数是否为阿姆斯特朗数

下面是一个紧凑的 Java 实现,验证给定整数是否为阿姆斯特朗数。算法遍历每一位数字,累加其立方(针对三位数),最后与原数比较。

// 使用 while 循环判断阿姆斯特朗数
package com.guru99;

public class ArmstrongNumber {
    public static void main(String[] args) {
        int inputArmstrongNumber = 153; // 待测试数字
        int tempNumber, digit, digitCubeSum = 0;
        tempNumber = inputArmstrongNumber;

        while (tempNumber != 0) {
            System.out.println("当前数字: " + tempNumber);
            digit = tempNumber % 10;
            System.out.println("当前位数: " + digit);
            digitCubeSum += digit * digit * digit;
            System.out.println("当前立方和: " + digitCubeSum);
            tempNumber /= 10;
        }

        if (digitCubeSum == inputArmstrongNumber) {
            System.out.println(inputArmstrongNumber + " 是阿姆斯特朗数");
        } else {
            System.out.println(inputArmstrongNumber + " 不是阿姆斯特朗数");
        }
    }
}

运行输出

当前数字: 153
当前位数: 3
当前立方和: 27
当前数字: 15
当前位数: 5
当前立方和: 152
当前数字: 1
当前位数: 1
当前立方和: 153
153 是阿姆斯特朗数

Java 列出 0 到 999 之间所有阿姆斯特朗数

以下程序演示如何枚举 0-999 范围内的所有阿姆斯特朗数。外层 for 循环遍历范围,内层 while 循环处理每个候选数。

// 枚举 0-999 之间的阿姆斯特朗数
package com.guru99;

public class ArmstrongNumber {
    public static void main(String[] args) {
        for (int inputArmstrongNumber = 0; inputArmstrongNumber < 1000; inputArmstrongNumber++) {
            int tempNumber = inputArmstrongNumber;
            int digitCubeSum = 0;
            while (tempNumber != 0) {
                int digit = tempNumber % 10;
                digitCubeSum += digit * digit * digit;
                tempNumber /= 10;
            }
            if (digitCubeSum == inputArmstrongNumber) {
                System.out.println(inputArmstrongNumber + " 是阿姆斯特朗数");
            }
        }
    }
}

运行输出

0 是阿姆斯特朗数
1 是阿姆斯特朗数
153 是阿姆斯特朗数
370 是阿姆斯特朗数
371 是阿姆斯特朗数
407 是阿姆斯特朗数

通用化改进:支持任意位数

上述代码固定计算立方(3 次幂),仅适用于三位数。通用版本应先计算位数 n,再计算各位 n 次幂之和:

public static boolean isArmstrong(int number) {
    if (number < 0) return false;
    int original = number;
    int n = String.valueOf(number).length(); // 位数
    int sum = 0;
    while (number > 0) {
        int digit = number % 10;
        sum += Math.pow(digit, n);
        number /= 10;
    }
    return sum == original;
}

java

  1. 钛锅养护专家指南:延长寿命与提升性能
  2. 掌握 C# for 循环:语法、执行流程与实战示例
  3. Java Hello World:你的第一个程序
  4. 精通 Java 增强 for 循环:语法、示例与最佳实践
  5. Java 构造器重载详解:规则、链式调用与实战代码
  6. Java 判断素数(质数)的完整指南与代码实现
  7. Java 打印 1 到 100 之间所有素数:完整代码与步骤解析
  8. Java 生成斐波那契数列:for 循环、while 循环与递归实现全解析
  9. Java 递归反转字符串:原理、代码实现与性能分析
  10. Java 回文数判断:while 循环与 for 循环两种算法实现
  11. Java 插入排序算法详解:核心原理、完整代码与步骤演示
  12. Java 选择排序详解:核心原理、完整代码与步骤演示