home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / spencer_2bsd.tar.gz / 2bsd.tar / src / pascal / tests / primes.p < prev    next >
Text File  |  1980-02-17  |  860b  |  31 lines

  1. program primes(output);
  2. const n = 1000; n1 = 33;   (*n1 = sqrt(n)*)
  3. var i,k,x,inc,lim,square,l: integer;
  4.     prim: boolean;
  5.     p,v: array[1..n1] of integer;
  6. begin writeln(wallclock);
  7.    write(2:6, 3:6); l := 2;
  8.    x := 1; inc := 4; lim := 1; square := 9;
  9.    for i := 3 to n do
  10.    begin (*find next prime*)
  11.       repeat x := x + inc; inc := 6-inc;
  12.          if square <= x then
  13.             begin lim := lim+1;
  14.                v[lim] := square; square := sqr(p[lim+1])
  15.             end ;
  16.          k := 2; prim := true;
  17.          while prim and (k<lim) do
  18.          begin k := k+1;
  19.             if v[k] < x then v[k] := v[k] + 2*p[k];
  20.             prim := x <> v[k]
  21.          end
  22.       until prim;
  23.       if i <= n1 then p[i] := x;
  24.       write(x:6); l := l+1;
  25.       if l = 10 then
  26.          begin writeln; l := 0
  27.          end
  28.    end ;
  29.    writeln; writeln(wallclock)
  30. end .
  31.