MODULE Mertens; FROM InOut IMPORT WriteString, WriteInt, WriteCard, WriteLn; CONST Max = 1000; VAR n, k, x, y, zero, cross: CARDINAL; M: ARRAY [1..Max] OF INTEGER; BEGIN M[1] := 1; FOR n := 2 TO Max DO M[n] := 1; FOR k := 2 TO n DO M[n] := M[n] - M[n DIV k]; END; END; WriteString("The first 99 Mertens numbers are:"); WriteLn(); FOR y := 0 TO 90 BY 10 DO FOR x := 0 TO 9 DO IF x+y=0 THEN WriteString(" "); ELSE WriteInt(M[x+y], 3); END; END; WriteLn(); END; zero := 0; cross := 0; FOR n := 2 TO Max DO IF M[n] = 0 THEN zero := zero + 1; IF M[n-1] # 0 THEN cross := cross + 1; END; END; END; WriteString("M(n) is zero "); WriteCard(zero,0); WriteString(" times."); WriteLn(); WriteString("M(n) crosses zero "); WriteCard(cross,0); WriteString(" times."); WriteLn(); END Mertens.