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

← Problem 9  Problem 11 →
<?php

// Problem 7 と同様に素数を求める。
// Problem 7 のままでは遅すぎるので、素数か否かを調べるときに、
// 素数の平方根(ルート)の値までで割ることとする。
// 2を除き、それ以外の素数は全て奇数なので、奇数だけ調べる。

$answer = 17;

// 調査対象は奇数だけなので、2は除外しておく。
$prime = array(3,5,7);

// 調査対象は7 の次の奇数から
$num = 7;

// 10001 番目の素数を見つける
while($num < 2000000)
{
	$num += 2;
	$sqrt = sqrt($num);
	$flag = true;
	foreach($prime as $v)
	{
		if($num % $v == 0)
		{
			$flag = false;
			break;
		}
		if($sqrt < $v)
		{
			break;
		}
	}
	if($flag)
	{
		//echo $num."\n";
		$prime[] = $num;
		$answer += $num;
	}
}

echo $answer;

?>
問題文