📅  最后修改于: 2023-12-03 15:18:27.215000             🧑  作者: Mango
阿姆斯壮数字,又称自恋数或阿姆斯特朗数,指的是一个 n 位数(n≥3),它的每个数字的 n 次幂之和等于它本身。例如:1^3 + 5^3 + 3^3 = 153。
如何检查一个数字是否是阿姆斯壮数字?我们可以按照如下步骤实现一个 PHP 函数:
false
。true
,否则返回 false
。/**
* 检查一个正整数是否是阿姆斯壮数字
* @param int $num 待检查的数字
* @return bool
*/
function isArmstrongNumber(int $num): bool
{
// 不是正整数,直接返回 false
if ($num <= 0 || !is_integer($num)) {
return false;
}
// 将数字转换为字符串并计算其位数
$digits = str_split(strval($num));
$n = count($digits);
// 计算每个数字的 n 次幂相加的和
$sum = 0;
foreach ($digits as $digit) {
$sum += pow($digit, $n);
}
// 判断是否为阿姆斯壮数字
return $sum == $num;
}
下面是一些测试样例:
assert(isArmstrongNumber(153) == true);
assert(isArmstrongNumber(9474) == true);
assert(isArmstrongNumber(407) == true);
assert(isArmstrongNumber(1634) == true);
assert(isArmstrongNumber(370) == true);
assert(isArmstrongNumber(371) == true);
assert(isArmstrongNumber(0) == false);
assert(isArmstrongNumber(-153) == false);
assert(isArmstrongNumber(100) == false);
assert(isArmstrongNumber(888) == false);
assert(isArmstrongNumber(947) == false);
其中 assert
是一个 PHP 自带的断言函数,用于判断某个表达式是否为 true
,如果结果为 false
,则会抛出错误,并输出提示信息。这样可以方便地进行测试和调试。