- var_dump: documentation ( source)
- microtime: documentation ( source)
- var_export: documentation ( source)
- array_filter: documentation ( source)
- array_keys: documentation ( source)
- array_fill: documentation ( source)
- pow: documentation ( source)
<?php
// Trial division
function generatePrimesA($n) {
$primes = [2];
for ($i = 3; $i < $n; $i += 2) {
foreach ($primes as $prime) {
if ($i % $prime == 0) {
continue 2;
}
}
$primes[] = $i;
}
return $primes;
}
// Sieve of Eratosthenes
function generatePrimesB($max) {
$primes = array_fill(2, $max - 1, true);
for ($i = 2; pow($i, 2) < $max; $i++) {
if ($primes[$i]) {
for ($j = $i * $i; $j <= $max; $j += $i) {
$primes[$j] = false;
}
}
}
return array_keys(array_filter($primes));
}
// $a = microtime(1);
// var_dump(count(generatePrimesA(100000)));
// $a = microtime(1) - $a;
$b = microtime(1);
var_export(count(generatePrimesB(100000)));
$b = microtime(1) - $b;
// var_dump($a);
var_dump($b);