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 之间的所有水仙花数。