home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol148 / prime.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1984-04-29  |  2.1 KB  |  101 lines

  1. program prime(0);
  2. {An adaptation of the program in Byte, Jan 83, p 214.
  3. The program uses the long integer routines from the library
  4. disc (UNIT1) and the Knuth algorithm to test a series of
  5. numbers for prime-ness.}
  6.  
  7. label
  8.   1;
  9. const
  10.   bufmax = 16;
  11.   bytemax = 5;
  12. type
  13.   byte = 0..255;
  14.   longint = record
  15.     byt: array [0..bytemax] of integer;
  16.     pos: boolean
  17.         end;
  18.   realarray = array [0..bytemax] of integer;
  19.   writebuf = array [0..bufmax] of integer;
  20.   digarray = array [0..2] of 0..9;
  21.   string19 = packed array [1..19] of char;
  22. var
  23.   seed1, seed2: integer;
  24.   prm,
  25.   xeof: boolean;
  26.   stdin,
  27.   stdout: text;
  28.   instr: char;
  29.   three,        {3 in longint}
  30.   n: longint;        {candidate prime}
  31.  
  32. procedure getc ( VAR ch: char );
  33.     external;
  34.  
  35. procedure errortrap ( str: string19 );
  36.     external;
  37.  
  38. procedure Negate ( var a: longint );
  39.     external;
  40.  
  41. function iszero ( num: longint ): boolean;
  42.     external;
  43.  
  44. function equal ( a,b: longint ): boolean;
  45.     external;
  46.  
  47. procedure CVI ( a: integer; var u: longint );
  48.     external;
  49.  
  50. function CVL ( u: longint; var a: integer ): boolean;
  51.     external;
  52.  
  53. function greater ( a,b: longint ): boolean;
  54.     external;
  55.  
  56. procedure getlong ( var f: text; var num: longint );
  57.     external;
  58.  
  59. procedure putlong ( var f: text; num: longint; fieldwidth: integer );
  60.     external;
  61.  
  62. procedure sub ( a,b: longint; var c: longint );
  63.     external;
  64.  
  65. procedure add ( a,b: longint; var c: longint );
  66.     external;
  67.  
  68. procedure multlong ( a,b: longint; var c: longint );
  69.     external;
  70.  
  71. procedure divlong ( a,b: longint; var q,rem: longint );
  72.     external;
  73.  
  74. procedure seedrand; external;
  75. function random(x: integer): real; external;
  76.  
  77. procedure instructions; external;
  78.  
  79. procedure get_n(var n:longint); external;
  80.  
  81. procedure if_even(var n:longint); external;
  82.  
  83. procedure n_prime(n:longint; var prm:boolean); external;
  84.  
  85. begin        {main program}
  86. write('  Instructions? (Y/N) '); readln(instr);
  87. if instr in ['Y','y'] then instructions;
  88. rewrite('con:',stdout);
  89. reset('con:',stdin);
  90. prm := false;
  91. cvi(3,three);
  92. get_n(n);
  93. if greater(three,n) then goto 1;    {operator exit}
  94.   if_even(n);            {determine if n is even, if so subract 1}
  95. repeat
  96.   n_prime(n,prm);            {the guts; is n prime?}
  97. until prm;            {program termination when prime found}
  98.  
  99. 1:
  100. end.
  101.