用PHP实现埃拉托斯特尼筛法

// 私の環境では、これ以上大きい値を指定すると落ちます。
$number = 500000;

if ($number < 2) {
    exit(1);
}

$primes = array();

$sieve = array();
for ($i = 2; $i <= $number; $i++) {
    $sieve[$i] = $i;
}

while (true) {

    $prime = reset($sieve);
    if ($prime * $prime > $number) {
        break;
    }

    unset($sieve[$prime]);
    $primes[] = $prime;

    for ($i = 1; $i * $prime <= end($sieve); $i++) {
        unset($sieve[$i * $prime]);
    }
}

$primes = array_merge($primes, $sieve);

print(implode(',', $primes) . "\n");
bannerAds