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

← Problem 43  Problem 45 →
<?php

// 5角数の和 = m(3m - 1)/2 とする
// とりあえず力技

$array = array();
$m = 1;
while(true)
{
	$flag = false;
	$m5 = $m * (3 * $m - 1) / 2;
	@$array[$m5] = $m5;
	for($k = $m -1 ; 2 * $k - $m > 0 ; $k--)
	{
		$k5 = $k * (3 * $k - 1) / 2;
		if(array_key_exists($m5 - $k5 , $array))
		{
			if(array_key_exists($k5 - ($m5 - $k5), $array))
			{
				$flag = true;
				break;
			}
		}
	}
	if($flag)
	{
		break;
	}
	$m++;
}
echo ($k5 - ($m5 - $k5))."\n";

?>
問題文