|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 2304 (0x900)
Types: TextFile
Names: »prime3tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »prime3tx «
program prime3 (output);
const
setsize = 128;
maxelement = 127;
setparts = 39 ; (*= 10000 div setsize div 2*)
type
natural = 0..maxint;
var
sieve, primes : array Æ0..setpartsÅ of set of 0..maxelement;
nextprime : record
part, element : natural;
end;
multiple, newprime : natural;
p, n, count : natural;
empty : boolean;
begin (*initialize*)
for p := 0 to setparts do
begin
sieve ÆpÅ := Æ0..maxelementÅ;
primes ÆpÅ := ÆÅ;
end;
sieve Æ0Å := sieve Æ0Å - Æ0Å;
empty := false;
nextprime.part := 0;
nextprime.element := 1;
with nextprime do
repeat (*find next prime*)
while not (element in sieve ÆpartÅ) do
element := succ (element);
primes ÆpartÅ := primes ÆpartÅ + ÆelementÅ;
newprime := 2 * element + 1;
multiple := element;
p := part;
while p <= setparts do (*eliminate*)
begin
sieve ÆpÅ := sieve ÆpÅ - ÆmultipleÅ;
p := p + part * 2;
multiple := multiple + newprime;
while multiple > maxelement do
begin
p := p + 1;
multiple := multiple - setsize;
end;
end (*while p <= setparts*);
if sieve ÆpartÅ = ÆÅ then
begin
empty := true;
element := 0;
end;
while empty and (part < setparts) do
begin
part := part + 1;
empty := sieve ÆpartÅ = ÆÅ;
end;
until empty;
count := 0;
for p := 0 to setparts do
for n := 0 to maxelement do
if n in primes ÆpÅ then
begin
write (output, 2 * n + 1 + p * setsize * 2:6);
count := count + 1;
if (count mod 8) = 0 then
writeln (output);
end;
end.
▶EOF◀