📜  用于检查 Armstrong 编号的Java程序

📅  最后修改于: 2022-05-13 01:55:04.345000             🧑  作者: Mango

用于检查 Armstrong 编号的Java程序

问题陈述——给定一个数字 x。编写一个Java程序来确定给定的数字是否是 Armstrong 的数字。

例子 -

Input : 153
Output : Yes
153 is an Armstrong number.
1*1*1 + 5*5*5 + 3*3*3 = 153

Input : 120
Output : No
120 is not a Armstrong number.
1*1*1 + 2*2*2 + 0*0*0 = 9

Input : 1253
Output : No
1253 is not a Armstrong Number
1*1*1*1 + 2*2*2*2 + 5*5*5*5 + 3*3*3*3 = 723

Input : 1634
Output : Yes
1*1*1*1 + 6*6*6*6 + 3*3*3*3 + 4*4*4*4 = 1634

阿姆斯壮数

在数学数字系统中,阿姆斯特朗数是任何给定数字基数中的数字,当它的每个数字乘以该数字的总位数的幂时,它会得到相同数字的总和。简单来说,我们可以说n 位的正整数称为n阶 Armstrong 数(阶是数字中存在的位数的总数),如果,

abcd... = pow(a,n) + pow(b,n) + pow(c,n) + pow(d,n) + .... 

例如,使用简单的数字153和十进制系统,我们可以看到其中包含 3 位数字。如果我们做一个简单的数学运算,将它的每个数字提高到 3 的幂,然后将得到的总和相加,我们得到 153。

1 3 + 5 3 + 3 3 =153。数字 153 是 Armstrong 数字的一个示例。

Java
// Java program to determine whether the number is
// Armstrong number or not
public class Armstrong {
    /* Function to calculate x raised to the
       power y */
    int power(int x, long y)
    {
        if (y == 0)
            return 1;
        if (y % 2 == 0)
            return power(x, y / 2) * power(x, y / 2);
        return x * power(x, y / 2) * power(x, y / 2);
    }
  
    /* Function to calculate order of the number */
    int order(int x)
    {
        int n = 0;
        while (x != 0) {
            n++;
            x = x / 10;
        }
        return n;
    }
  
    // Function to check whether the given number is
    // Armstrong number or not
    boolean isArmstrong(int x)
    {
        // Calling order function
        int n = order(x);
        int temp = x, sum = 0;
        while (temp != 0) {
            int r = temp % 10;
            sum = sum + power(r, n);
            temp = temp / 10;
        }
  
        // If satisfies Armstrong condition
        return (sum == x);
    }
  
    // Driver Program
    public static void main(String[] args)
    {
        Armstrong ob = new Armstrong();
        int x = 153;
        System.out.println(x + " : " + ob.isArmstrong(x));
        x = 1253;
        System.out.println(x + " : " + ob.isArmstrong(x));
    }
}


输出
153 : true
1253 : false