php函数判断水仙花数

什么是水仙花数?

水仙花数,也称为自恋数,是指一个n位数(n>=3),其各位数字的n次方和等于该数本身。例如,153是一个水仙花数,因为`1³ + 5³ + 3³ = 153`。

如何判断一个数是否为水仙花数?

根据上面的定义,我们可以使用以下方法来判断一个数是否为水仙花数:

1. 首先,我们需要确定这个数字的位数。可以使用`strlen()`函数将数字转换成字符串,并使用`strlen()`函数来获取字符串长度。

```

$str = (string)$num;

$len = strlen($str);

```

2. 接下来,我们需要将这个数字的每个位数分别取出来,并进行n次方运算。可以使用`substr()`函数来获取数字各个位上的数字,并使用`pow()`函数来进行n次方运算。

```

for($i=0; $i<$len; $i++) {

$digit = substr($str, $i, 1);

$sum += pow($digit, $len);

}

```

3. 最后,我们将上述运算的结果与原来的数字进行比较,如果相等,则这个数字为水仙花数。

```

if($sum == $num) {

return true;

} else {

return false;

}

```

将上述步骤封装成一个公共函数

将上述步骤封装成一个公共函数,可以方便地在其他程序中调用。

```

public function isNarcissisticNumber($num) {

$str = (string)$num;

$len = strlen($str);

$sum = 0;

for($i=0; $i<$len; $i++) {

$digit = substr($str, $i, 1);

$sum += pow($digit, $len);

}

if($sum == $num) {

return true;

} else {

return false;

}

}

```

使用示例

下面是使用示例。

```

$num1 = 153;

$num2 = 370;

$num3 = 371;

$num4 = 407;

if(isNarcissisticNumber($num1)) {

echo $num1." is a Narcissistic Number!"."\n";

}

if(isNarcissisticNumber($num2)) {

echo $num2." is a Narcissistic Number!"."\n";

}

if(isNarcissisticNumber($num3)) {

echo $num3." is a Narcissistic Number!"."\n";

}

if(isNarcissisticNumber($num4)) {

echo $num4." is a Narcissistic Number!"."\n";

}

```

输出结果如下:

```

153 is a Narcissistic Number!

370 is a Narcissistic Number!

371 is a Narcissistic Number!

407 is a Narcissistic Number!

```

总结

在本文中,我们介绍了什么是水仙花数,以及如何使用PHP编写一个公共函数来判断一个数是否为水仙花数。我们使用PHP中的字符串操作函数`strlen()`和`substr()`来获取数字的位数和各个位上的数字,以及使用PHP中的数学函数`pow()`来进行n次方运算。我们将这些步骤封装成一个公共函数,方便地在其他程序中调用。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/

点赞(81) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部