// 私の環境では、これ以上大きい値を指定すると落ちます。
$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");
More than 5 years have passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
List of users who liked
11