用于检查阿姆斯特朗数的 Java 程序

javaobject oriented programmingprogramming更新于 2024/11/29 9:48:17

在数论中,阿姆斯特朗数是一种基于模式的数,其每位数字的总位数的幂之和等于给定数字本身。因此,要检查数字是否为阿姆斯特朗数,首先,确定数字的总位数并假设为"n"。然后分离每位数字并对其进行"n"次方。在最后一步中,计算每位数字的幂并将它们全部相加。如果我们得到的和等于原始数字,则它就是阿姆斯特朗数,否则不是。本文旨在解释如何在 Java 中检查给定数字是否为阿姆斯特朗数。

用于检查阿姆斯特朗数的 Java 程序

在本节中,我们将编写两个 Java 程序来识别数字是否为阿姆斯特朗数。在此之前,让我们借助一个例子来讨论问题陈述 -

实例

输入 1

1634

输出

1634 是阿姆斯特朗数

解释

1^4 + 6^4 + 3^4 + 4^4 = 1634,幂和与数字都相同。

输入 2

525

输出

525 不是阿姆斯特朗数

解释

5^3 + 2^3 + 5^3 = 258,幂和与数字都不相同。

现在,让我们进入 Java 程序来检查给定的数字是否是阿姆斯特朗数。

示例 1

在下面的例子中,我们将借助 Scanner 类从用户那里获取一个输入数字,并检查给定的数字是否是阿姆斯特朗数。

方法

  • 首先,声明一个变量来存储数字幂的总和。

  • 然后,创建 Scanner 类的一个实例来从用户那里获取一个整数输入。

  • 将原始输入复制到另一个变量。这是必要的,因为原始数字将在下一个 while 循环结束时递减为 0。

  • 现在,将整数输入转换为字符串,以便我们可以使用 for 循环遍历数字的每个数字。

  • 进行一段时间循环,直到原始数字变为 0。我们将在此循环中放入检查 Armstrong 的逻辑。

  • 最后,检查每个数字的幂之和是否等于原始数字。

import java.util.*;
public class IsArmstrong {
   public static void main(String[] args) {
    // 变量用于存储幂的和
    int sum = 0;
    // 创建 Scanner 类的实例
    Scanner sc = new Scanner(System.in);
    System.out.println("输入一个数字来检查阿姆斯特朗数:");
    // 获取输入数字
    int num = sc.nextInt();
    // 将输入复制到名为 copy 的变量
    int copy = num;
    // 将整数转换为字符串
    String n = Integer.toString(num);
    // 存储转换后的字符串的长度
    int len = n.length();
    // 循环检查阿姆斯特朗数
    while(num != 0) {
        int rem = num % 10;
        int mul = 1;
        for(int i = 1; i <= len; i++) {
            mul *= rem;
        }
        sum += mul;
        num /= 10;
    }
    // 打印结果
    if(sum == copy) {
        System.out.println(copy + " 是阿姆斯特朗数");
    } else {
        System.out.println(copy + " 不是阿姆斯特朗数");
    }
   }
}

输出 1

输入一个数字来检查阿姆斯特朗数:
525
525 不是阿姆斯特朗数

输出 2

输入一个数字来检查阿姆斯特朗数:
1634
1634 是阿姆斯特朗数

示例 2

这是另一个检查阿姆斯特朗数的示例,其中我们不从用户那里获取输入,而是在声明时初始化输入数字。

import java.util.*;
public class IsArmstrong {
   public static void main(String[] args) {
        int sum = 0;
        int num = 153;
        int copy = num;
        System.out.println("定义用于检查 Armstrong 的数字是:" + num);
        String n = Integer.toString(num);
        int len = n.length();
        while(num != 0) {
            int rem = num % 10;
            int mul = 1;
            for(int i = 1; i <= len; i++) {
                mul *= rem;
            }
            sum += mul;
            num /= 10;
        }
        if(sum == copy) {
            System.out.println(copy + " 是 Armstrong 数字");
        } else {
            System.out.println(copy + " 不是 Armstrong 数字");
        }
   }
}

输出

用于检查阿姆斯特朗的数字是:153
153 是阿姆斯特朗数

结论

在本文中,我们了解了什么是阿姆斯特朗数以及如何检查给定数字是否为阿姆斯特朗数。为此,我们在 Java 程序中使用了 while 和 for 循环以及 if-else 条件。


相关文章


有用资源