|
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◀