48 lines
1.0 KiB
Plaintext
48 lines
1.0 KiB
Plaintext
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.
|