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