home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ipo-101.zip / Samples.zip / PRIME2.PAS < prev    next >
Pascal/Delphi Source File  |  1997-09-10  |  1KB  |  57 lines

  1. program primes(input, output);
  2. type
  3.     PrimeList = packed list of integer;
  4. var
  5.     primes : PrimeList;
  6.     num, i, candidate : integer;
  7.  
  8.     function IsPrime : boolean;
  9.     var
  10.        i, x : integer;
  11.     begin
  12.        for i := 1 to length(primes) do
  13.           begin
  14.              x := primes[i];
  15.              if candidate mod x = 0 then
  16.                 exit(false);
  17.              if primes[i] > trunc(sqrt(candidate)) then
  18.                 exit(true)
  19.           end;
  20.        writeln('Overrun');
  21.     end;
  22.  
  23.     procedure GenPrime;
  24.     begin
  25.        repeat
  26.           candidate := candidate + 2;
  27.           if IsPrime then
  28.              begin
  29.                 writeln(candidate);
  30.                 insert(candidate, primes, length(primes)+1);
  31.                 exit
  32.              end
  33.        until candidate = maxint;
  34.        writeln('Error')
  35.     end;
  36.  
  37. begin
  38.     write('Enter number of primes to generate ');
  39.     readln(num);
  40.     if (num<3) or (num > 10000) then
  41.        begin
  42.           writeln('primes must be between 3 and 10000');
  43.           exit
  44.        end;
  45.     new(primes);
  46.     insert(2, primes, 1);
  47.     insert(3, primes, 2);
  48.     insert(5, primes, 3);
  49.     writeln(2);
  50.     writeln(3);
  51.     writeln(5);
  52.     candidate := 5;
  53.     for i := 4 to num do
  54.        GenPrime;
  55.     dispose(primes);
  56. end.
  57.