28213までの過剰数を求めた後、28213までの中から、過剰数の和で算出できたものを除外していって、最後に合計する。
<?php
// 28213 以下の過剰数を見つける。
$array = array();
$answer = 0;
for($i = 2 ; $i <= 28213 ; $i++)
{
$tmp = 0;
$sqrt = sqrt($i);
for($j = 2 ; $j <= $sqrt ; $j++)
{
if($j == $sqrt)
{
$tmp +=$j;
}
else if($i % $j == 0)
{
$tmp = $tmp + $j + ($i / $j);
}
}
if($i < $tmp)
{
$array[] = $i;
}
}
// 1から28213 までの配列を作る
$array2 = array();
for($i = 1 ; $i <= 28213 ; $i++)
{
@$array2[$i] = $i;
}
foreach($array as $v1)
{
foreach($array as $v2)
{
unset($array2[$v1 + $v2]);
if($v1 <= $v2)
{
break;
}
}
}
$answer = array_sum($array2);
echo $answer;
?>