参照了网上的一些写法和想法
function sift_prime($max) { for ($i = 2; $i <= $max; $i ++) {//把值赋值为bool,加快存取速度 $data[$i] = true; } for ($i = 2; $i < $max; $i ++) if (true == $data[$i]) for ($j = $i + 1; $j <= $max; $j ++) if (0 === $j % $i)//如果能整除,设为false $data[$j] = false; foreach ($data as $key => $prime) { if (true == $prime)//如果值为true,取其下标即为质数 $newdata[] = $key; } return $newdata; }