p_8_2.pas
来自「Java写的词法/语法分析器。可生成JAVA语言或者是C++的词法和语法分析器。」· PAS 代码 · 共 45 行
PAS
45 行
{ program 8.2
generate the primes between 3..10000 using a
sieve containing odd integers in this range. }
program primes(output);
const
wdlength = 59; {implementation dependent}
maxbit = 58;
w = 84; {w=n div wdlength div 2}
var
sieve, primes : array[0..w] of set of 0..maxbit;
next : record word,bit : integer
end;
j,k,t,c : integer; empty:boolean;
begin {initialize}
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 {find next prime}
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 {eliminate}
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; {ends with}
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?