C语言分数计算问题,求优化


#include
#include
int main()
{
    int a, b, c, d;
    scanf("%d/%d", &a, &b);
    int gcd(int a, int b);
    while (scanf("%d/%d", &c, &d) != 0)
    {
        a = a * d + b * c;
        b = b * d;
    }
    int e = gcd(a, b);
    if (e == -1)
    {
        printf("0");
        return 0;
    }
    else
    {
        a = a / e;
        b = b / e;
    }
    printf("%d/%d", a, b);
    return 0;
}
int gcd(int a, int b)                   //约分函数,辗转相除法
{
    if (a == 0)
    {
        return -1;
    }
    int c = a % b;
    while (c != 0)
    {
        a = b;
        b = c;
        c = a % b;
    }
    return abs(b);
}

运行超时,该怎么优化?