home *** CD-ROM | disk | FTP | other *** search
- program t13;
- (* primzahlen <200 *)
- const wdlength=9;
- maxbit=8;
- w=10;
- var sieve,primes:array[0..w] of set of 0..maxbit;
- next : record word,bit:integer end;
- i,j,k,t,c:integer;
- empty:boolean;
- begin
- writeln('Primzahlen <200');
- for t:=0 to w do
- begin
- sieve[t]:=[0..maxbit];
- primes[t]:=[];
- end;
- sieve[0]:=sieve[0]-[0]; next.word:=0;
- next.bit:=1; empty:=false;
- with next do
- repeat
- write('.');
- while not(bit in sieve[word]) do bit:=succ(bit);
- primes[word]:=primes[word]+[bit];
- c:=2*bit+1;
- j:=bit; k:=word;
- while k<=w do
- begin
- sieve[k]:=sieve[k]-[j];
- k:=k+word*2; j:=j+c;
- while j>maxbit do
- begin
- k:=k+1; j:=j-wdlength
- end;
- end;
- if sieve[word]=[] then
- begin
- empty:=true; bit:=0;
- end;
- while empty and (word<w) do
- begin
- word:=word+1; empty:=sieve[word]=[]
- end;
- until empty;
- c:=1;
- for i:=0 to w do
- for k:=0 to maxbit do begin
- if k in primes[i] then writeln(c);
- c:=c+2;
- end;
- end.
-
-
-