- var_dump: documentation ( source)
- array_filter: documentation ( source)
- array_diff: documentation ( source)
- pow: documentation ( source)
- range: documentation ( source)
<?php
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;
}
function generatePrimesB($max) {
$primes = range(2, $max);
for ($i = 0; pow($primes[$i], 2) < $max; $i++) {
$prime = $primes[$i];
$primes = array_filter($primes, function($p) use ($prime) { return $p % $prime == 0; });
}
return $primes;
}
var_dump(count(generatePrimesA(1000)));
var_dump(count(generatePrimesB(1000)));
var_dump(array_diff(generatePrimesA(1000), generatePrimesB(1000)));