完全数
完全数とは、その数を除いた約数を全て足したときにもともとの数と一致するものをいいます。
たとえば、6の約数は「1,2,3,6」ですが、6を除いた「1 + 2 + 3」が6になるため完全数といえます。
もっと詳しく知りたい〜!という方はWikipedeiaを見てみてください。
PHPで計算
今回はPHPで完全数を求めて、それを表示するコードを書いてみました。
勉強中の方は参考にしてみてください。 ※もちろんもっと短くしたりできます。
$number = 1;
$perfectNumber = array();
for($i = 1; $i < 500; $i++){
$verification = 0;
$formula = '';
for($j = 1;$j <= ($number / 2);$j++){ if($number % $j == 0){ $verification += $j; if($formula != '') $formula.= ' + '; $formula .= $j; } } if($number == $verification){ $perfectNumber[$number] = $formula; } if($number == ($verification + 1)){ $semiPerfectNumber[$number] = $formula; } $number++; } echo "完全数は\n"; foreach ($perfectNumber as $number => $formula){
echo $number . ' 【約数の和】' . $formula . "\n";
}
echo "完全数に近い数は\n";
foreach ($semiPerfectNumber as $number => $formula){
echo $number . ' 【約数の和】' . $formula . "\n";
}
このように書くと、完全数は500以下の整数では3つあることがわかります。
おまけで、完全数になれない約数の総和+1が一致するものも調べてみると、2の倍数であることがわかりました。
結果はこのように出力されます
完全数は
6 【約数の和】1 + 2 + 3
28 【約数の和】1 + 2 + 4 + 7 + 14
496 【約数の和】1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
完全数に近い数は
1 【約数の和】
2 【約数の和】1
4 【約数の和】1 + 2
8 【約数の和】1 + 2 + 4
16 【約数の和】1 + 2 + 4 + 8
32 【約数の和】1 + 2 + 4 + 8 + 16
64 【約数の和】1 + 2 + 4 + 8 + 16 + 32
128 【約数の和】1 + 2 + 4 + 8 + 16 + 32 + 64
256 【約数の和】1 + 2 + 4 + 8 + 16 + 32 + 64 + 128