1 Star 0 Fork 0

Paul / BasicAlgorithmsDemo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
4_NarcissusNumber.php 1.26 KB
一键复制 编辑 原始数据 按行查看 历史
<?php
/**
* 水仙花数问题:水仙花数指三位数中,每个数字的立方和和自身相等的数字,例如370,3 × 3 × 3 + 7 × 7 × 7 + 0 × 0 × 0 =370,请输出所有的水仙花数
*
* 分析:该问题中体现了一个基本的算法——数字拆分,需要把一个数中每位的数字拆分出来,然后才可以实现该逻辑。
*
* 实现思路:循环所有的三位数,拆分出三位数字的个位、十位和百位数字,判断3个数字的立方和是否等于自身
*
* 在该代码中,拆分个位数字使用i和10取余即可,拆分十位数字时首先用i除以十,去掉个位数字,并使原来的十位数字变成个位,然后和10取余即可,因为i是一个三位数,所以i除以100即可得百位数字,因为这里都是整数除法,不存在小数的问题。然后只需要判断立方和是否等于自身即可。
*
* 注意:因为i是循环变量,这里不能改变i的值,不然可能造成死循环
*/
for ($i = 100; $i < 1000; $i++) {
// 个位数字
$a = $i % 10;
// 十位数字
$b = intval(floor($i / 10)) % 10;
// 百位数字
$c = intval(floor($i / 100));
if ($a * $a * $a + $b * $b * $b + $c * $c * $c === $i) {
echo $i . PHP_EOL;
}
}
PHP
1
https://gitee.com/paultest/php_basic_algorithms.git
git@gitee.com:paultest/php_basic_algorithms.git
paultest
php_basic_algorithms
BasicAlgorithmsDemo
master

搜索帮助