判斷水仙花數
什么是水仙花數
水仙花數(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);
?>