<?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; ?>