begin
comment
CALCULATION OF THE PRIME NUMBERS BETWEEN 2 AND 200
;
integer NN;
NN ≔ 200;
begin
comment FIRST ALGORITHM (CHECK DIVISION IN A LOOP) ;
boolean procedure ISPRIME (N);
value N;
integer N;
begin
boolean procedure EVEN (N);
value N; integer N;
EVEN ≔ ENTIER (N / 2) × 2 = N;
integer I;
ISPRIME ≔ false;
if EVEN (N) ∧ N ≠ 2 then
goto RET;
for I ≔ 3 step 2 until N ÷ 2 do
if ENTIER (N / I) × I = N then
goto RET;
ISPRIME ≔ true;
RET:
end;
integer I;
VPRINT (“FIRST:”);
for I ≔ 2 step 1 until NN do
if ISPRIME (I) then
OUTINTEGER (1, I);
VPRINT (“\NDONE.”)
end;
begin
comment SECOND ALGORITHM (SIEVE) ;
boolean array ARR [2 : NN];
integer I, J;
VPRINT (“SECOND:”);
for I ≔ 2 step 1 until NN do
ARR [I] ≔ true;
for I ≔ 2 step 1 until NN ÷ 2 do
for J ≔ 2 × I step I until NN do
ARR [J] ≔ false;
for I ≔ 2 step 1 until NN do
if ARR [I] then
OUTINTEGER (1, I);
VPRINT (“\NDONE.”)
end
end