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 'DIV' 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 'DIV' 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