原文: https://www.programiz.com/java-programming/examples/armstrong-number
在此程序中,您将学习检查给定的数字是否为阿姆斯特朗数。 您将通过在 Java 中使用for
循环和while
循环学习如何做到这一点。
一个正整数称为阿姆斯特朗数n
,如果
abcd... = an + bn + cn + dn + ...
对于 3 位的阿姆斯特朗数,每个数字的立方数之和等于数字本身。 例如:
153 = 1*1*1 + 5*5*5 + 3*3*3 // 153 is an Armstrong number.
示例 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 + " is an Armstrong number.");
else
System.out.println(number + " is not an Armstrong number.");
}
}
运行该程序时,输出为:
371 is an Armstrong number.
- 首先,给定数字(
number
)的值存储在另一个整数变量originalNumber
中。 这是因为,我们需要在最后比较最终编号和原始编号的值。 然后,使用
while
循环循环遍历originalNumber
,直到等于 0。- 在每次迭代中,
number
的最后一位存储在remainder
中。 - 然后,使用
Math.pow()
函数将remainder
加 3(数字位数),并加到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 + " is an Armstrong number.");
else
System.out.println(number + " is not an Armstrong number.");
}
}
运行该程序时,输出为:
1634 is an Armstrong number.
在此程序中,我们没有使用while
循环,而是使用了两个for
循环。
第一个for
循环用于计算数字中的位数。 它是以下形式的压缩形式:
for (;originalNumber != 0; originalNumber /= 10) {
n++;
}
然后,第二个for
循环计算result
,其中在每次迭代中,余数由数字n
来供电。
访问此页面了解如何显示两个时间间隔之间的所有阿姆斯特朗数。