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) and N notequal 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;
		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 '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 
				OUTINTEGER (1, I);
		VPRINT ("\NDONE.")
	end 
end