Project Euler にチャレンジ:Problem 21 PHPでの解答

← Problem 20  Problem 22 →
Problem 12で用いたPHPでの解き方で、約数を求める方法を書いたので、 それを参考に解いた。
<?php

// 自分自身を除く約数
// 1以外は全て約数の中に1が含まれる

$array = array();
$answer = 0;
for($i = 2 ; $i < 10000 ; $i++)
{
	$array[$i] = 1;
	$sqrt = sqrt($i);
	
	for($j = 2 ; $j <= $sqrt ; $j++)
	{
		if($j == $sqrt)
		{
			$array[$i] +=$j;
		}
		else if($i % $j == 0)
		{
			$array[$i] = $array[$i] + $j + ($i / $j);
		}
	}
}

foreach($array as $k => $v)
{
	if(@$array[$v] == $k and $v != $k)
	{
		$answer += $v;
	}
}

echo $answer;

?>
問題文