RosettaCodeData/Task/Primality-by-trial-division/Modula-2/primality-by-trial-division.mod2
2023-07-01 13:44:08 -04:00

36 lines
646 B
Text

MODULE TrialDivision;
FROM InOut IMPORT WriteCard, WriteLn;
CONST
Max = 100;
VAR
i: CARDINAL;
PROCEDURE prime(n: CARDINAL): BOOLEAN;
VAR
factor: CARDINAL;
BEGIN
IF n <= 4 THEN
RETURN (n = 2) OR (n = 3)
ELSIF n MOD 2 = 0 THEN
RETURN FALSE
ELSE
factor := 3;
WHILE factor * factor <= n DO
IF n MOD factor = 0 THEN
RETURN FALSE
END;
INC(factor, 2)
END
END;
RETURN TRUE
END prime;
BEGIN
FOR i := 0 TO Max DO
IF prime(i) THEN
WriteCard(i,3);
WriteLn
END
END
END TrialDivision.