跳到主要内容

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 中移除最后一位数字。

最后,比较 resultnumber。如果相等,则是阿姆斯特朗数;如果不相等,则不是。

示例 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 次方被累加。

访问这个页面了解,您如何在两个区间内显示所有阿姆斯特朗数