PHP输出所有位数的水仙花

5年以前  |  阅读数:557 次  |  编程语言:PHP 

判断水仙花数

什么是水仙花数

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

<?php
/***水仙花数为不小于3位的数字,每位数字的N次幂的和等于该数字.N为该数字的位数*@namedaffodilsNum水仙花数*@param$places水仙花位数>=3*/
function daffodilsNum($places=3){
    if(!defined('PLACES')) define('PLACES',is_numeric($places)?$places:3);
    if(PLACES>=3){
        $min=pow(10,PLACES-1);
        //选数范围起始位置
        $max=pow(10,PLACES);
        //选数范围结束位置//开始选数
        for($i=$min,$out='';$i<$max;$i++){
            $sum=0;
            //当前选数下各个幂值的和
            $arr=str_split($i);//以字符串方式分割选数
            for($j=0;$j<PLACES;++$j)//对每个数字作幂操作并累加
            {
                $sum+=pow($arr[$j],PLACES);
                if($sum>$i)
                //如果当前累加已大于选数,则跳出循环
                    break;}
                if($sum==$i)//如果符合定义,将该数字添加到输出队列
                    $out.=$i."\n";
            }
        //输出队列
        echo$out;
    }
}
echo daffodilsNum(3);

?>
 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
贪吃蛇
文件下载
双位运算符
发送邮件
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
提取后缀名
年的日历图
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例