<?php $prime = array(2); $i = 3; $answer = 0; // まずは100万未満の素数を抽出する。 $tmp = 2; while($i < 1000000) { if(check_prime($i)) { $tmp += $i; $prime[] = $i; } $i+=2; } // 2から順番に足していって、素数になったときの個数を記憶する $count = count($prime); $max = 0; for($i = 0 ; $i < $count ; $i++) { $tmp = 0; for($j = $i ; $j < $count ; $j++) { $tmp += $prime[$j]; if(check_prime($tmp) and $max < $j - $i) { $max = $j - $i; $answer = $tmp; //echo $answer." ".$max."\n"; } if($tmp > 1000000) { break; } } } echo $answer."\n"; function check_prime($num) { $flag = true; if($num % 2 != 0) { // 素数チェック $sqrt = sqrt($num); for($i = 3 ;$i <= $sqrt ; $i+=2) { if($num % $i == 0) { $flag = false; break; } } } else { $flag = false; } return $flag; } ?>