阿姆斯特朗数是指一个数的各位数字的n次幂之和等于该数本身,其中n是该数的位数。本文将讨论如何检查给定的数字是否为阿姆斯特朗数。
让我们通过一些输入输出示例来了解阿姆斯特朗数。
<code>9474</code>
<code>是</code>
这是一个四位数。这个数的数字是 9、4、7 和 4。
<code>9474 = 9<sup>4</sup> + 4<sup>4</sup> + 7<sup>4</sup> + 4<sup>4</sup><br>= 6561 + 256 + 2401 + 256<br>= 9474</code>
所以,这是一个阿姆斯特朗数。
<code>153</code>
<code>是</code>
这是一个三位数。这个数的数字是 1、5 和 3。
<code>153 = 1<sup>3</sup> + 5<sup>3</sup> + 3<sup>3</sup><br>= 1 + 125 + 27<br>=153</code>
所以,这是一个阿姆斯特朗数。
我们将获取一个整数作为输入。我们首先编写一个函数来计算数字的总位数。现在我们初始化一个变量来存储总和,并将原始数字存储在任何变量中。现在,我们使用模运算符提取数字的每个数字,并将数字的幂加到总位数。最后,我们检查计算出的总和是否等于原始数字。
按照以下步骤在 PHP 中实现上述问题的解决方案 -
以下是按照上述讨论的实现步骤在 PHP 中的实现。
<code class="language-php"><?php // 计算数字位数的函数 function countDigits($num) { return strlen((string)$num); } // 检查数字是否为阿姆斯特朗数的函数 function isArmstrong($num) { $k = countDigits($num); $sum = 0; $originalNum = $num; while ($num > 0) { $ld = $num % 10; $sum += pow($ld, $k); $num = (int)($num / 10); } return $sum == $originalNum; } $number = 153; if (isArmstrong($number)) { echo "$number 是阿姆斯特朗数。"; } else { echo "$number 不是阿姆斯特朗数。"; } ?></code>
<code>153 是阿姆斯特朗数。</code>
时间复杂度:O(d * n),其中 d 是位数,n 是每个数字的幂 空间复杂度:O(1),常数空间
以上是php程序检查数字是否是阿姆斯特朗号的详细内容。更多信息请关注PHP中文网其他相关文章!