Generate prime numbers using the Sieve of Eratosthenes algorithm
<?php
class PrimeGenerator {
/**
* Generate prime numbers up to a given limit using Sieve of Eratosthenes
*
* @param int $limit The upper limit for prime generation
* @return array Array of prime numbers
*/
public static function sieveOfEratosthenes($limit) {
if ($limit < 2) {
return [];
}
// Initialize boolean array
$isPrime = array_fill(0, $limit + 1, true);
$isPrime[0] = $isPrime[1] = false;
for ($i = 2; $i * $i <= $limit; $i++) {
if ($isPrime[$i]) {
// Mark all multiples of $i as composite
for ($j = $i * $i; $j <= $limit; $j += $i) {
$isPrime[$j] = false;
}
}
}
// Collect all prime numbers
$primes = [];
for ($i = 2; $i <= $limit; $i++) {
if ($isPrime[$i]) {
$primes[] = $i;
}
}
return $primes;
}
/**
* Check if a single number is prime
*
* @param int $number The number to check
* @return bool True if prime, false otherwise
*/
public static function isPrime($number) {
if ($number < 2) return false;
if ($number === 2) return true;
if ($number % 2 === 0) return false;
for ($i = 3; $i * $i <= $number; $i += 2) {
if ($number % $i === 0) {
return false;
}
}
return true;
}
}
// Example usage
$primes = PrimeGenerator::sieveOfEratosthenes(100);
echo "Prime numbers up to 100:\n";
echo implode(', ', $primes) . "\n";
echo "\nChecking individual numbers:\n";
$testNumbers = [17, 25, 29, 100];
foreach ($testNumbers as $num) {
$result = PrimeGenerator::isPrime($num) ? 'prime' : 'not prime';
echo "$num is $result\n";
}
?>
Views
Lines
Characters
Likes