什么是水仙花数?
水仙花数,也称为自恋数,是指一个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/
发表评论 取消回复