Java 程序:检查阿姆斯特朗数

要理解此示例,您应了解以下Java编程主题


如果一个正整数是 n 阶阿姆斯特朗数,则

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

对于一个三位数的阿姆斯特朗数,其各位数字的立方之和等于该数字本身。例如

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

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

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。
    • 在每次迭代中,num 的最后一位数字存储在 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.

在此程序中,我们使用了两个 for 循环,而不是 while 循环。

第一个 for 循环用于计算数字的位数。它是以下内容的精简形式:

for (;originalNumber != 0; originalNumber /= 10) {
     n++;
}

第二个 for 循环计算 result,在每次迭代中,余数乘以位数 n


另请阅读

在我们结束之前,让我们用以下挑战来测试您对 Java 程序检查阿姆斯特朗数的了解!您能解决以下挑战吗?

挑战

编写一个函数来检查一个数字是否为阿姆斯特朗数。

  • 一个三位数的阿姆斯特朗数是一个整数,其各位数字的立方之和等于该数字本身。
  • 例如,371 是一个阿姆斯特朗数,因为 3^3 + 7^3 + 1^3 = 371
  • 如果 num 是阿姆斯特朗数,则返回 "It's an Armstrong Number"。否则,返回 "It's not an Armstrong Number"
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战