RosettaCodeData/Task/M-bius-function/Modula-2/m-bius-function.mod2

42 lines
642 B
Plaintext

MODULE Moebius;
(* Moebius function *)
FROM STextIO IMPORT
WriteLn, WriteString;
FROM SWholeIO IMPORT
WriteInt;
VAR
T, U: INTEGER;
PROCEDURE Moebius(N: INTEGER): INTEGER;
VAR
M, F: INTEGER;
BEGIN
M := 1;
IF N <> 1 THEN
F := 2;
REPEAT
IF N MOD (F * F) = 0 THEN
M := 0
ELSE
IF N MOD F = 0 THEN
M := -M;
N := N DIV F
END;
F := F + 1
END
UNTIL (F > N) OR (M = 0)
END;
RETURN M
END Moebius;
BEGIN
FOR T := 0 TO 9 DO
FOR U := 1 TO 10 DO
WriteInt(Moebius(10 * T + U), 2);
WriteString(' ')
END;
WriteLn
END
END Moebius.