{PHP} Prime

基础版:

<?php

$sum = 2;

for ($i = 3; $i < 10000; $i+=2) { $flag = True;

for ($j = 2; $j <= sqrt($i); $j++) { if ($i % $j == 0) { $flag = False; break; } }

if ($flag) { $sum += $i; echo $i . "\n"; } }

echo $sum . "\n";

?>

神仙居看到的《筛法找质数之PHP版

<?php
define('MAX_NUM', 1000000);
$all = array_fill(0, MAX_NUM, 0);

echo "2\n"; for ($i = 3; $i < MAX_NUM; $i+=2) {
if ($all[$i] == 0) { echo $i."\n"; //测试性能时去掉这行。输出会占据大部分时间。 for ($j = $i; $j < MAX_NUM; $j+=$i) { $all[$j] = 1; } } } ?>


参考资料:

  1. 问一个超级弱的问题,求素数中为什么要先开平方

  2. 埃拉托斯特尼筛法

  3. 求百万级别的质数的几种算法

EOF