#include <iostream> using namespace std; int gcd(int x, int y) { return (!y) ? x : gcd(y, x % y); } int gcd2(int x, int y) { if(x < y) return gcd2(y, x); if(y == 0) return x; return gcd2(x - y, y); } int gcd3(int x, int y) { if(x < y) return gcd3(y, x); if(y == 0) return x; if(x & 0x01) { if(y & 0x01) return gcd3(y, x - y); else return gcd3(x, y >> 1); } else { if(y & 0x01) return gcd3(x >> 1, y); else return 2 * gcd3(x >> 1, y >> 1); } } void main() { cout << gcd3(48, 24) << endl; }