mirror of
https://github.com/vishapoberon/oberonbyexample.git
synced 2026-04-05 21:02:25 +00:00
31 lines
604 B
Modula-2
31 lines
604 B
Modula-2
MODULE gcd;
|
|
|
|
|
|
IMPORT Out, Modules;
|
|
|
|
|
|
VAR
|
|
gcd : INTEGER;
|
|
arg0, arg1 : LONGINT;
|
|
|
|
|
|
PROCEDURE getGCD(a, b : INTEGER): INTEGER;
|
|
VAR ret : INTEGER;
|
|
BEGIN
|
|
IF a = 0 THEN ret := b;
|
|
ELSIF b = 0 THEN ret := a;
|
|
ELSIF b > a THEN ret := getGCD(b, a);
|
|
ELSE ret := getGCD(b, a MOD b) END;
|
|
RETURN ret;
|
|
END getGCD;
|
|
|
|
|
|
BEGIN
|
|
IF Modules.ArgCount # 3 THEN
|
|
Out.String("enter two integers to get GCD"); Out.Ln;
|
|
HALT(1)
|
|
END;
|
|
Modules.GetIntArg(1, arg0); Modules.GetIntArg(2, arg1);
|
|
gcd := getGCD(SHORT(arg0), SHORT(arg1));
|
|
Out.Int(gcd, 0); Out.Ln;
|
|
END gcd.
|