DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦5939e3963⟧ TextFile

    Length: 1280 (0x500)
    Types: TextFile
    Names: »PRIMES.PAS«

Derivation

└─⟦0d02879d3⟧ Bits:30004605 COMPAS Pascal version 3.03
    └─ ⟦this⟧ »PRIMES.PAS« 
└─⟦8e533ec5a⟧ Bits:30004189 COMPAS Pascal v3.02 til CR7
    └─ ⟦this⟧ »PRIMES.PAS« 
└─⟦c96461903⟧ Bits:30002787 SW1602 COMPAS Pascal Version 3.07 Release 1.1
    └─ ⟦this⟧ »PRIMES.PAS« 

TextFile

PROGRAM PRIMES; (*$R-*)

(* This program will calculate and display all prime numbers *)
(* between 1 and 30000. The algorithm of the program is to   *)
(* start out with an array containing representatives for    *)
(* all odd numbers between 3 and 29999. Starting from 3 and  *)
(* working upwards, each odd number is then tested. If a     *)
(* number is still a member of the list when it is tested,   *)
(* it is a prime number, and thus it is printed, and all odd *)
(* multiples of the number are eliminated from the list. As  *)
(* can be expected, the program is quite slow on calculating *)
(* the very first primes, but from then on it gets faster    *)
(* and faster. Note that 1 and 2 are assumed to be primes,   *)
(* and not actually calculated.				     *)

CONST
  MAX2 = 15000;   (* MAXPRIME/2 *)
  MAX3 = 10000;   (* MAXPRIME/3 *)

VAR
  I,J,K: INTEGER;
  TEST: ARRAYÆ2..MAX2Å OF BOOLEAN;

BEGIN
  WRITE(1:8,2:8);
  FOR I:=2 TO MAX2 DO TESTÆIÅ:=TRUE;
  FOR I:=2 TO MAX2 DO
  IF TESTÆIÅ THEN
  BEGIN
    J:=I+I-1; WRITE(J:8);
    IF J<MAX3 THEN
    BEGIN
      K:=I+J;
      WHILE K<=MAX2 DO
      BEGIN
	TESTÆKÅ:=FALSE; K:=K+J;
      END;
    END;
  END;
  WRITELN;
END.
«eof»