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) TIMES 2 = N;
            integer I;
            ISPRIME := false;
            if EVEN(N) IMPL N NOTEQUAL 2 then goto RET;
            for I := 3 step 2 until N ÷ 2 do
              if ENTIER(N ÷ I) TIMES 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 TIMES 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 ;