CS153/hw4/hw4programs/binary_gcd.oat
jmug b24a264f7e Update hw4 to a newer version.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 21:01:32 -08:00

26 lines
536 B
Text

int binary_gcd (int x, int y) {
if (x == y) { return x; }
if (x == 0) { return y; }
if (y == 0) { return x; }
if ((~x [&] 1) == 1) {
if ((y [&] 1) == 1) {
return binary_gcd(x >> 1, y);
}
else {
return binary_gcd(x >> 1, y >> 1) << 1;
}
}
if ((~y [&] 1) == 1) {
return binary_gcd(x, y >> 1);
}
if (x > y) {
return binary_gcd((x - y) >> 1, y);
}
return binary_gcd((y - x) >> 1, x);
}
int program (int argc, string[] argv) {
var x = 21;
var y = 15;
return binary_gcd(x, y);
}