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

← Problem 52  Problem 54 →
<?php

$answer = 0;
for($n = 1 ; $n <= 100 ; $n++)
{
	// 1,000,000 を超えたらflag を true に
	$flag = false;
	$tmp = 1; 
	$tmp_n = $n - 1; 
	for($r = 1 ; $r < $n / 2 ; $r++)
	{
		$tmp = $tmp * ($n - $r + 1 )/ $r;
		if($tmp >= 1000000)
		{
			$flag = true;
			break;
		}
		else
		{
			$tmp_n -= 2;
		}
	}
	if($flag)
	{
		// r = 10 で 1,000,000 を超えたら、
		// r = 13 でも 超えることは自明
		// r = 11,12 の時も、必ず超える
		$answer += $tmp_n;
	}
}
echo $answer."\n";

?>
問題文