3v4l.org

run code in 300+ PHP versions simultaneously
<?php function sieve($limit) { if ($limit < 3) { if ($limit < 2) { return []; } return array_slice([2, 3], 0, $limit - 1); } $nums = range(3, $limit - !($limit % 2), 2); for ($p = current($nums); $p; next($nums)) { for ($n = $p; $n < $limit; $n += $p) { unset($nums[$n]); } } return $nums; } var_dump(sieve(20));

preferences:
49.89 ms | 402 KiB | 5 Q