home *** CD-ROM | disk | FTP | other *** search
- 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.
-