int mcd(int a, int b) {
int r;
while (b != 0) {
r = a%b;
a = b; b = r;
}
return a;
}
void drob(int& a, int& b) {
int aux = mcd(a,b);
a /= aux; b /= aux;
}
Во времена Эвклида никаких «Great common divisor» не было. Даже буквы G не было тогда. Для исторической справедлиывости в данном случае надо бы использовать древнегреческий алфавит и язык. А латниница тут вообще постороняя.
Выглядит неплохо, но в большинстве реальных случаев особого смысла не имеет. Достаточно глянуть на оценки количества шагов эвклидова алгоритма в худшем случае.