用于检查 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