home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 02 / t13.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1986-02-05  |  1.1 KB  |  53 lines

  1. program t13;
  2. (* primzahlen <200 *)
  3. const wdlength=9;
  4.       maxbit=8;
  5.        w=10;
  6. var sieve,primes:array[0..w] of set of 0..maxbit;
  7.     next : record word,bit:integer end;
  8.     i,j,k,t,c:integer;
  9.     empty:boolean;
  10. begin
  11.   writeln('Primzahlen <200');
  12.   for t:=0 to w do
  13.    begin
  14.      sieve[t]:=[0..maxbit];
  15.      primes[t]:=[];
  16.    end;
  17.   sieve[0]:=sieve[0]-[0]; next.word:=0;
  18.   next.bit:=1; empty:=false;
  19.   with next do
  20.   repeat
  21.     write('.');
  22.     while not(bit in sieve[word]) do bit:=succ(bit);
  23.     primes[word]:=primes[word]+[bit];
  24.     c:=2*bit+1;
  25.     j:=bit; k:=word;
  26.     while k<=w do
  27.       begin
  28.         sieve[k]:=sieve[k]-[j];
  29.         k:=k+word*2; j:=j+c;
  30.         while j>maxbit do
  31.          begin
  32.            k:=k+1; j:=j-wdlength
  33.          end;
  34.       end;
  35.     if sieve[word]=[] then
  36.       begin
  37.         empty:=true; bit:=0;
  38.       end;
  39.     while empty and (word<w) do
  40.      begin
  41.        word:=word+1; empty:=sieve[word]=[]
  42.      end;
  43.    until empty;
  44.    c:=1;
  45.    for i:=0 to w do
  46.      for k:=0 to maxbit do begin
  47.        if k in primes[i] then writeln(c);
  48.        c:=c+2;
  49.      end;
  50.  end.
  51.  
  52.  
  53.