size : 1060
uploaded_on : Mon Mar 1 00:00:00 1999
modified_on : Wed Dec 8 14:03:35 1999
title : Prime number generation
org_filename : primegen.pas
author : FrΘdΘric
authoremail : fb@rz-online.de
description : A fast prime number generator, displays 31000 consecutive primes (beginning with 2)
keywords :
tested : BP7
submitted_by : The CKB Crew
submitted_by_email : ckb@netalive.org
uploaded_by : nobody
modified_by : nobody
owner : nobody
lang : pas
file-type : text/plain
category : pascal-alg-maths
__END_OF_HEADER__
{
The following program displays 31000 consecutive primes (beginning with 2)
in 10 seconds at only 120 MHz. It requires 384,000 bytes of heap memory,
I compiled it for protected mode.
}
program primegen;
const
Num = 6;
type
SubArray = array[0..63999] of boolean;
var
Whole : array[0..Num-1] of ^SubArray;
i, j, Size : longint;
procedure WriteItem(Index: longint; Value: boolean);
var
a, b : word;
begin
a := Index div Size;
b := Index mod Size;
Whole[a]^[b] := Value
end;
function ReadItem(Index: longint): boolean;
var
a, b : word;
begin
a := Index div Size;
b := Index mod Size;
ReadItem := Whole[a]^[b]
end;
begin
Writeln('Calculating...');
Size := 64000 div SizeOf(boolean);
for i := 0 to Num-1 do New(Whole[i]);
for i := 0 to 363269 do WriteItem(i, true);
for i := 2 to 363269 div 2 do
for j := 2 to (num * size - 1) div i do
WriteItem(i * j, false);
WriteItem(0,false);
for i := 0 to 363269 do
if ReadItem(i) then write(i:8);
for i := 0 to Num-1 do Dispose(Whole[i]);
Readln;
end.