原文: https://www.programiz.com/java-programming/examples/armstrong-number

在此程序中,您将学习检查给定的数字是否为阿姆斯特朗数。 您将通过在 Java 中使用for循环和while循环学习如何做到这一点。

一个正整数称为阿姆斯特朗数n,如果

  1. abcd... = an + bn + cn + dn + ...

对于 3 位的阿姆斯特朗数,每个数字的立方数之和等于数字本身。 例如:

  1. 153 = 1*1*1 + 5*5*5 + 3*3*3 // 153 is an Armstrong number.

示例 1:检查 3 位数字的阿姆斯特朗数

  1. public class Armstrong {
  2. public static void main(String[] args) {
  3. int number = 371, originalNumber, remainder, result = 0;
  4. originalNumber = number;
  5. while (originalNumber != 0)
  6. {
  7. remainder = originalNumber % 10;
  8. result += Math.pow(remainder, 3);
  9. originalNumber /= 10;
  10. }
  11. if(result == number)
  12. System.out.println(number + " is an Armstrong number.");
  13. else
  14. System.out.println(number + " is not an Armstrong number.");
  15. }
  16. }

运行该程序时,输出为:

  1. 371 is an Armstrong number.
  • 首先,给定数字(number)的值存储在另一个整数变量originalNumber中。 这是因为,我们需要在最后比较最终编号和原始编号的值。
  • 然后,使用while循环循环遍历originalNumber,直到等于 0。

    • 在每次迭代中,number的最后一位存储在remainder中。
    • 然后,使用Math.pow()函数将remainder加 3(数字位数),并加到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 + " 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来供电。

访问此页面了解如何显示两个时间间隔之间的所有阿姆斯特朗数。