Возможно ли модифицировать функцию?

Возможно ли модифицировать функцию gcf таким образом, чтобы она вычисляла выражение а%b один раз за вызов. Если возможно, напишите это оптимальное решение.

#include <iostream>
using namespace std;

int gcf(int a, int b);
int main() {
    int a, b;
    while (1) {
        cout << "Press \"0\" to exit" << endl;
        cout << "Enter the 1st number: ";
        cin >> a;
         if (a == 0)
            break;
        cout << "Enter the 2nd number: ";
        cin >> b;
        cout << "gcf: " << gcf(a, b) << endl;
    }
    return 0;
}
int gcf(int a, int b) {
    cout << "gcf(" << a << " " << b << ")=>" << endl;
    if (a % b == 0)
        return b;
    else
        return gcf(b, a % b);
}

Ответы (1 шт):

Автор решения: Harry
int gcf(int a, int b) { return (a%=b) ? gcf(b,a):b; }

Только называется сие - greatest common divisor, gcd (и входит в стандартную библиотеку: https://en.cppreference.com/w/cpp/numeric/gcd).

→ Ссылка