トップページに戻る
次のPHPのサンプルへ
前のPHPのサンプルへ
Q09 ナルシシストな8進数
PHPのソース
<?php
$AnswerCnt = 0;
for($I = 1; $I <= PHP_INT_MAX ; $I++){
$OctValue = base_convert(strval($I) , 10 , 8);
$Len = strlen($OctValue);
if($Len < 2) continue;
$CurrNum = intval($OctValue);
$SumVal = 0;
while($CurrNum > 0){
$ModVal = $CurrNum % 10;
$SumVal += pow($ModVal , $Len);
$CurrNum = ($CurrNum - $ModVal) / 10;
}
if($SumVal == $I){
echo "ナルシシスト数{$OctValue}を発見";
echo PHP_EOL;
if(++$AnswerCnt == 8){
break;
}
}
}
実行結果
ナルシシスト数24を発見
ナルシシスト数64を発見
ナルシシスト数134を発見
ナルシシスト数205を発見
ナルシシスト数463を発見
ナルシシスト数660を発見
ナルシシスト数661を発見
ナルシシスト数40663を発見
解説
base_convert関数で、10進数から8進数に変換してます。