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 ;