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

← Problem 33  Problem 35 →
<?php

// 362880 * 7 = 2540160 が最大値
// 7 桁目は2! が最大なので、362880 * 6 + 2 = 2177282 が最大値
$fact = array(0=>1,1=>1,2=>2,3=>6,4=>24,5=>120,6=>720,7=>5040,8=>40320,9=>362880);

$answer = 0;
for($i = 10 ; $i <= 2177282 ; $i++)
{
	$tmp = 0;
	$len = strlen($i);
	for($j = 0 ; $j < $len ; $j++)
	{
		$tmp += $fact[substr($i,$j,1)];
	}
	if($i == $tmp)
	{
		echo $i."\n";
		$answer += $i;
	}
}

echo $answer;

?>
問題文