oberonbyexample/examples/recursion/Gcd.Mod.ob2
Antranig Vartanian 95b512baf4
post rebranding
2024-05-11 19:17:23 +04:00

31 lines
604 B
Text

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.