The Sieve of Eratosthenes efficiently find all prime numbers up to a given limit.
// The Sieve of Eratosthenes efficiently find all prime numbers up to a given limit.
procedure Sieve(limit : Integer);
var isPrime : array of Boolean;
begin
isPrime.SetLength(limit + 1);
for var i := 2 to limit do begin
if isPrime[i] then continue;
var j := i * i;
while j <= limit do begin
isPrime[j] := True;
j += i;
end;
end;
var count := 0;
for var i := 2 to limit do if not isPrime[i] then begin
Print(IntToStr(i) + ' ');
Inc(count);
end;
PrintLn('');
PrintLn('Total primes: ' + IntToStr(count));
end;
Sieve(50);
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 Total primes: 15