program prime(0);
{An adaptation of the program in Byte, Jan 83, p 214.
The program uses the long integer routines from the library
disc (UNIT1) and the Knuth algorithm to test a series of
numbers for prime-ness.}

label
  1;
const
  bufmax = 16;
  bytemax = 5;
type
  byte = 0..255;
  longint = record
	byt: array [0..bytemax] of integer;
	pos: boolean
	    end;
  realarray = array [0..bytemax] of integer;
  writebuf = array [0..bufmax] of integer;
  digarray = array [0..2] of 0..9;
  string19 = packed array [1..19] of char;
var
  seed1, seed2: integer;
  prm,
  xeof: boolean;
  stdin,
  stdout: text;
  instr: char;
  three,		{3 in longint}
  n: longint;		{candidate prime}

procedure getc ( VAR ch: char );
	external;

procedure errortrap ( str: string19 );
	external;

procedure Negate ( var a: longint );
	external;

function iszero ( num: longint ): boolean;
	external;

function equal ( a,b: longint ): boolean;
	external;

procedure CVI ( a: integer; var u: longint );
	external;

function CVL ( u: longint; var a: integer ): boolean;
	external;

function greater ( a,b: longint ): boolean;
	external;

procedure getlong ( var f: text; var num: longint );
	external;

procedure putlong ( var f: text; num: longint; fieldwidth: integer );
	external;

procedure sub ( a,b: longint; var c: longint );
	external;

procedure add ( a,b: longint; var c: longint );
	external;

procedure multlong ( a,b: longint; var c: longint );
	external;

procedure divlong ( a,b: longint; var q,rem: longint );
	external;

procedure seedrand; external;
function random(x: integer): real; external;

procedure instructions; external;

procedure get_n(var n:longint); external;

procedure if_even(var n:longint); external;

procedure n_prime(n:longint; var prm:boolean); external;

begin		{main program}
write('  Instructions? (Y/N) '); readln(instr);
if instr in ['Y','y'] then instructions;
rewrite('con:',stdout);
reset('con:',stdin);
prm := false;
cvi(3,three);
get_n(n);
if greater(three,n) then goto 1;	{operator exit}
  if_even(n);			{determine if n is even, if so subract 1}
repeat
  n_prime(n,prm);			{the guts; is n prime?}
until prm;			{program termination when prime found}

1:
end.
