如果一个正自然数可以表示为 n 次方的每个数字之和,则该自然数称为 n 阶的阿姆斯特朗数。从数学上讲,它可以表示为:

示例:
153 = 13+53+33 = 1+125+27 = 153
371 = 33+73+13 = 27+343+1 = 371
1634 = 14+64+34+44 = 1+1296+81+256 = 1634
方法 1:检查 Armstrong 数
在下面的示例中,使用名为 ArmStrongNum()MyNum 中的 Armstrong 数。该方法需要两个参数,第一个参数是数字,第二个参数是其中的位数。它使用 Pow() 方法计算数字的幂。请参阅下面的示例了解语法:
public class MyClass {
//计算一个数字的幂
static int Pow(int MyNum, int n) {
int x = 1;
while(n > 0) {
x = x*MyNum;
n--;
}
return x;
}
static void ArmStrongNum(int MyNum, int Order) {
int y = MyNum;
int sum = 0;
while (y > 0){
int x = y % 10;
sum = sum + Pow(x, Order);
y = y/10;
}
if (MyNum == sum){
System.out.println(MyNum + " is a Armstrong Number.");
} else {
System.out.println(MyNum + " is not a Armstrong Number.");
}
}
public static void main(String[] args) {
ArmStrongNum(371, 3);
ArmStrongNum(1634, 4);
ArmStrongNum(1000, 4);
}
}
上面的代码将给出以下输出:
371 is a Armstrong Number.
1634 is a Armstrong Number.
1000 is not a Armstrong Number.
方法 2: Armstrong 数
在此示例中,ArmStrongNum 方法仅需要一个参数,即数字本身。传递参数的位数是在方法内部估计的。
public class MyClass {
//计算数字的幂
static int Pow(int MyNum, int n) {
int x = 1;
while(n > 0) {
x = x*MyNum;
n--;
}
return x;
}
static void ArmStrongNum(int MyNum) {
int y = MyNum;
int sum = 0;
int Order = 0;
//查找Number中的位数
while(y > 0){
Order++;
y = y / 10;
}
y = MyNum;
while (y > 0){
int x = y % 10;
sum = sum + Pow(x, Order);
y = y/10;
}
if (MyNum == sum){
System.out.println(MyNum + " is a Armstrong Number.");
} else {
System.out.println(MyNum + " is not a Armstrong Number.");
}
}
public static void main(String[] args) {
ArmStrongNum(153);
ArmStrongNum(9474);
ArmStrongNum(5000);
}
}
上面的代码将给出以下输出:
153 is a Armstrong Number.
9474 is a Armstrong Number.
5000 is not a Armstrong Number.