php水仙花数怎么写
时间 : 2023-03-25 17:32:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
PHP水仙花数指的是一个三位数各个位数立方和等于这个数本身的数。例如,153是一个水仙花数,因为 $1^3+5^3+3^3=153$。这里介绍几种方法来用 PHP 来寻找所有的水仙花数。
方法一:暴力枚举法
这是一种最简单的方法,就是枚举所有的三位数,然后判断它是否是水仙花数。虽然这种方法很慢,但是代码非常简单易懂。
```php
for ($i=100; $i<1000; $i++) {
$sum = 0;
$num = $i;
while ($num > 0) {
$sum += pow($num % 10, 3);
$num = (int)($num / 10);
}
if ($sum == $i) {
echo $i . " ";
}
}
方法二:减少枚举次数
如果我们知道了一个数的各位数字,那么我们就可以直接计算出这个数的立方和。因此,我们可以通过减少枚举次数的方法来提高程序效率。首先,我们可以将百位、十位、个位上的数字枚举出来,然后再计算立方和。
```php
for ($i=1; $i<=9; $i++) {
for ($j=0; $j<=9; $j++) {
for ($k=0; $k<=9; $k++) {
$n = $i*100 + $j*10 + $k;
$sum = $i*$i*$i + $j*$j*$j + $k*$k*$k;
if ($sum == $n) {
echo $n . " ";
}
}
}
}
方法三:使用递归函数
为了使程序更加简洁,我们可以使用递归函数。我们可以将三位数的各个位数依次传入递归函数中,然后判断它们的立方和是否等于原数本身。
```php
function narcissistic($num, $n) {
if ($n == 0) {
return 0;
} else {
return pow($num % 10, 3) + narcissistic((int)($num/10), $n-1);
}
}
for ($i=100; $i<=999; $i++) {
if (narcissistic($i, 3) == $i) {
echo $i . " ";
}
}
这些方法可以用来计算所有的三位水仙花数。在实际开发中,我们可以根据具体场景选择最合适的方法。
水仙花数是指一个三位数,其各个位数数字的立方和等于该数本身。例如,153是一个水仙花数,因为1³+5³+3³=1+125+27=153。
下面是用 PHP 语言编写判断水仙花数的代码:
```php
<?php
$num = 153;
$temp = $num;
$sum = 0;
while ($temp != 0) {
$remainder = $temp % 10;
$sum = $sum + $remainder * $remainder * $remainder;
$temp = (int) $temp / 10;
}
if ($num == $sum) {
echo "该数是水仙花数。";
} else {
echo "该数不是水仙花数。";
}
?>
该程序先将要判断的数赋值给变量 `$num`,然后使用 `while` 循环来将该数的个位、十位、百位的立方和存储在变量 `$sum` 中。最后,判断 `$num` 是否等于 `$sum`,如果是,则输出该数是水仙花数,否则输出该数不是水仙花数。
你也可以使用 `for` 循环来遍历所有的三位数,将上述代码包含在循环中,从而求出所有的水仙花数。
上一篇
php怎么调出一个网页
下一篇
php怎么获得微信公众号
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章