begin
comment
-- From the NASE A60 distribution --
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;
PRINTSLN (“FIRST:”);
for I ≔ 2 step 1 until NN do
if ISPRIME (I) then
PRINTNLN (I);
PRINTSLN (“DONE.”)
end;
begin
comment second algorithm (sieve) ;
boolean array ARR [2 : NN];
integer I, J;
PRINTSLN (“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
PRINTNLN (I);
PRINTSLN (“DONE.”)
end
end