如果一个正自然数可以表示为 n 次方的每个数字之和,则该自然数称为 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()函数。该函数需要两个参数,第一个参数是数字,第二个参数是其中的位数。它使用Pow()函数计算数字的幂。请参阅下面的示例了解语法:
<?php
function ArmStrongNum($MyNum, $Order) {
$y = $MyNum;
$sum = 0;
while ($y > 0){
$x = $y % 10;
$sum = $sum + Pow($x, $Order);
$y = (int)($y/10);
}
if ($MyNum == $sum){
echo $MyNum." 是阿姆斯特朗数.\n";
} else {
echo $MyNum." 不是阿姆斯特朗数.\n";
}
}
ArmStrongNum(371, 3);
ArmStrongNum(1634, 4);
ArmStrongNum(1000, 4);
?>
上面的代码将给出以下输出:
371 是阿姆斯特朗数.
1634 是阿姆斯特朗数.
1000 不是阿姆斯特朗数.
方法 2: n阶Armstrong数
在此示例中,ArmStrongNum 函数仅需要一个参数,即数字本身。传递参数的位数是在函数内部估计的。
<?php
function ArmStrongNum($MyNum) {
$y = $MyNum;
$sum = 0;
$Order = 0;
//查找Number中的位数
while($y > 0){
$Order++;
$y = (int)($y / 10);
}
$y = $MyNum;
while ($y > 0){
$x = $y % 10;
$sum = $sum + Pow($x, $Order);
$y = (int)($y/10);
}
if ($MyNum == $sum){
echo $MyNum." 是阿姆斯特朗数.\n";
} else {
echo $MyNum." 不是阿姆斯特朗数.\n";
}
}
ArmStrongNum(153);
ArmStrongNum(9474);
ArmStrongNum(5000);
?>
上面的代码将给出以下输出:
153 是阿姆斯特朗数.
9474 是阿姆斯特朗数.
5000 不是阿姆斯特朗数.