Podría ser esta una solución rápida, me basé en teoremas de congruencias:
#include <stdio.h>
int mcd(int a, int b)
{
if(b == 0)
return a;
else
mcd(a, a%b);
}
void _abs(int *a)
{
if(*a < 0) *a *= -1;
}
int main()
{
int x, y, mxdiv;
_abs(&x);
_abs(&y);
mxdiv = mcd(x, y);
printf("\n MCD > %d \n", mxdiv
); return 0;
}
Lei que también el operador condicional ? sería un buen reemplazo para ese if de _asb.