Task

Test whether an integer is even or odd.

There is more than one way to solve this task:

 Use the even and odd predicates, if the language provides them.
 Check the least significant digit. With binary integers, i bitwise-and 1 equals 0 iff i is even, or equals 1 iff i is odd.
 Divide i by 2. The remainder equals 0 iff i is even. The remainder equals +1 or -1 iff i is odd.
 Use modular congruences:
 i ≡ 0 (mod 2) iff i is even.
 i ≡ 1 (mod 2) iff i is odd.


 
MODULE EvenOrOdd;
IMPORT 
  S := SYSTEM,
  Out;
VAR
  x: INTEGER;
  s: SET;
 
BEGIN
  x := 10;Out.Int(x,0);
  IF ODD(x) THEN Out.String(" odd") ELSE Out.String(" even") END; 
  Out.Ln;
 
  x := 11;s := S.VAL(SET,LONG(x));Out.Int(x,0);
  IF 0 IN s THEN Out.String(" odd") ELSE Out.String(" even") END;
  Out.Ln;  
 
  x := 12;Out.Int(x,0);
  IF x MOD 2 # 0 THEN Out.String(" odd") ELSE Out.String(" even") END;
  Out.Ln
END EvenOrOdd.
 