PHP实现水仙花数的5个示例

369 篇文章 ¥29.90 ¥99.00
本文介绍了如何使用PHP编程语言实现水仙花数,即一个数的每个位上的数字的n次幂之和等于它本身。文章通过5个示例详细讲解了不同的查找水仙花数的方法,包括遍历判断、特定数量查找、数组筛选等,旨在帮助读者更好地理解和应用PHP编程。

水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。在本文中,我们将使用PHP编程语言来实现水仙花数,并提供5个示例。

示例 1:

<?php
function isArmstrong($number) {
   
   
    $sum = 0;
    $temp = $number
以下是基于提供的引用内容以及专业知识整理的关于 PHP 实现水仙花代码示例: ### 使用函判断单个是否为水仙花 此方法通过定义一个函 `isArmstrong` 来判断给定字是否为水仙花。如果满足条件,则返回 `true`;否则返回 `false`。 ```php <?php function isArmstrong($number) { $sum = 0; $temp = $number; $n = strlen((string)$number); while ($temp != 0) { $remainder = $temp % 10; $sum += pow($remainder, $n); $temp = intval($temp / 10); } if ($sum == $number) { return true; } else { return false; } } // 测试水仙花 $number = 153; if (isArmstrong($number)) { echo $number . " 是水仙花"; } else { echo $number . " 不是水仙花"; } ?> ``` 上述代码实现了对单一字的检测功能[^1]。 --- ### 遍历求解小于1000的所有水仙花 该方法利用循环逐一验证范围内的每一个三位是否符合条件,并打印出所有的水仙花。 ```php <?php for ($i = 100; $i < 1000; $i++) { $a = intval($i / 100); // 百位 $b = intval(($i / 10) % 10); // 十位 $c = $i % 10; // 个位 if (pow($a, 3) + pow($b, 3) + pow($c, 3) == $i) { echo $i . "\t"; // 输出水仙花 } } ?> ``` 这段代码能够高效地找出所有小于1000的水仙花[^2]。 --- ### 找到前N个水仙花 为了寻找固定量的水仙花,可以通过设置计器 `$count` 和无限循环的方式实现。一旦找到足够的水仙花即可退出循环。 ```php <?php $count = 0; // 计器 $i = 100; // 起始值 while ($count < 5) { // 寻找前五个水仙花 $digits = str_split(strval($i)); $length = count($digits); $sum = 0; foreach ($digits as $digit) { $sum += pow($digit, $length); } if ($sum === $i) { echo "$i\t"; // 输出当前水仙花 $count++; // 增加计器 } $i++; } ?> ``` 这种算法特别适合于限定量的需求场景[^3]。 --- ### 面向对象方式实现水仙花 采用面向对象的思想封装逻辑,使代码更加模块化和可维护。 ```php <?php class ArmstrongNumber { public function check($number): bool { $sum = 0; $temp = $number; $n = strlen((string)$number); while ($temp != 0) { $remainder = $temp % 10; $sum += pow($remainder, $n); $temp = intval($temp / 10); } return $sum == $number; } public function findBelow(int $limit): array { $armstrongNumbers = []; for ($i = 100; $i < $limit; $i++) { if ($this->check($i)) { $armstrongNumbers[] = $i; } } return $armstrongNumbers; } } $obj = new ArmstrongNumber(); $result = $obj->findBelow(1000); print_r($result); ?> ``` 以上代码展示了如何使用类结构完成相同的功能[^4]。 --- #### 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值