php水仙花数怎么算
时间 : 2023-03-24 06:13:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
水仙花数是指一个n位正整数(n>=3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1³+5³+3³=153。
在PHP中,可以通过循环遍历各个数字的每一位,计算每个位上数字的n次幂之和,判断是否等于这个数本身来判断一个数是否为水仙花数。具体实现如下:
```php
function isNarcissisticNumber($num)
{
// 求出$num的位数
$len = strlen($num);
// 初始化每个位上对应的数字
$digits = str_split($num);
// 初始化每个位上数字的n次方之和
$sum = 0;
// 循环遍历每个数字
foreach ($digits as $digit) {
$sum += pow($digit, $len);
}
// 判断是否为水仙花数
if ($sum == $num) {
return true;
} else {
return false;
}
}
使用该函数判断一个数是否为水仙花数的示例代码如下:
```php
$num = 153;
if (isNarcissisticNumber($num)) {
echo "$num is a narcissistic number.";
} else {
echo "$num is not a narcissistic number.";
}
输出结果为:153 is a narcissistic number.
水仙花数,也叫阿姆斯特朗数,是指一个n位正整数,它的每个位上的数字的n次幂之和等于它本身。比如说,153是一个三位水仙花数,因为1^3+5^3+3^3等于153。
那么,如何用 PHP 来计算水仙花数呢?我们可以通过循环遍历计算每个数字的每个位数的幂值和,如果等于自身,那么就是一个水仙花数。
以下是一个 PHP 实现的水仙花数算法:
function isNarcissisticNumber($number) {
$digits = str_split($number); // 将数字拆分为每个位数
$count = count($digits);
$sum = 0;
foreach ($digits as $digit) {
$sum += pow($digit, $count); // 计算每个位数的幂值和
}
return $sum == $number; // 判断是否等于自身
}
for ($i = 100; $i < 1000; $i++) { // 遍历三位数
if (isNarcissisticNumber($i)) {
echo $i . " 是一个水仙花数\n";
}
}
代码中,首先定义了一个 `isNarcissisticNumber` 函数,用来判断一个数字是否为水仙花数。该函数的实现方式是:
1. 使用 `str_split` 函数将数字拆分为每个位数,$digits$ 数组保存了每个位数。
2. 使用 `count` 函数获取数字的位数 $count$。
3. 循环遍历 $digits$ 数组,计算每个位数的幂值和 $sum$。
4. 最后判断 $sum$ 是否等于自身,如果等于,则返回 true,表示该数字是一个水仙花数,否则返回 false。
然后使用 for 循环遍历 100 到 999 之间的所有三位数,调用 `isNarcissisticNumber` 函数来判断是否为水仙花数,如果是,则输出该数字。
通过上述代码,我们可以方便地计算出 100 到 999 之间的所有水仙花数。
上一篇
php怎么个数组添加元素
下一篇
php微信登录怎么做
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章