BSD 1 development
[unix-history] / puman / primes2.p
CommitLineData
5bd13011
BJ
1program primes(output);
2const n = 50; n1 = 6; (*n1 = sqrt(n)*)
3var i,k,x,inc,lim,square,l: integer;
4 prim: boolean;
5 p,v: array[1..n1] of integer;
6begin
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;
30end .