Java 程序:检查阿姆斯特朗数
要理解此示例,您应该具备以下 Java 编程 主题的知识:
如果一个正整数满足以下条件,它被称为 n
阶阿姆斯特朗数:
abcd... = an + bn + cn + dn + ...
在 3 位数的阿姆斯特朗数的情况下,每个数字的立方和等于该数字本身。例如:
153 = 1*1*1 + 5*5*5 + 3*3*3 // 153 是一个阿姆斯特朗数。
示例 1:检查 3 位数的阿姆斯特朗数
public class Armstrong {
public static void main(String[] args) {
int number = 371, originalNumber, remainder, result = 0;
originalNumber = number;
while (originalNumber != 0)
{
remainder = originalNumber % 10;
result += Math.pow(remainder, 3);
originalNumber /= 10;
}
if(result == number)
System.out.println(number + " 是阿姆斯特朗数。");
else
System.out.println(number + " 不是阿姆斯特朗数。");
}
}
输出
371 是阿姆斯特朗数。
- 首先,给定数字(
number
)的值存储在另一个整数变量originalNumber
中。这是因为,我们需要在最后比较最终数字和原始数字的值。 - 然后,使用 while 循环遍历
originalNumber
直到它等于 0。 - 在每次迭代中,
num
的最后一位数字存储在remainder
中。 - 然后,使用
Math.pow()
函数将remainder
的立方(数字位数)相加到result
中。 - 接着,通过除以 10 从
originalNumber
中移除最后一位数字。
最后,比较 result
和 number
。如果相等,则是阿姆斯特朗数;如果不相等,则不是。
示例 2:检查 n 位数的阿姆斯特朗数
public class Armstrong {
public static void main(String[] args) {
int number = 1634, originalNumber, remainder, result = 0, n = 0;
originalNumber = number;
for (;originalNumber != 0; originalNumber /= 10, ++n);
originalNumber = number;
for (;originalNumber != 0; originalNumber /= 10)
{
remainder = originalNumber % 10;
result += Math.pow(remainder, n);
}
if(result == number)
System.out.println(number + " 是阿姆斯特朗数。");
else
System.out.println(number + " 不是阿姆斯特朗数。");
}
}
输出
1634 是阿姆斯特朗数。
在这个程序中,我们使用了两个 for 循环而不是 while 循环。
第一个 for 循环用于计算数字中的位数。它是以下形式的简化版:
for (;originalNumber != 0; originalNumber /= 10) {
n++;
}
第二个 for 循环计算 result
,在每次迭代中,余数的 n 次方被累加。
访问这个页面了解,您如何在两个区间内显示所有阿姆斯特朗数。