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); }