¿Cómo puedo escribir un programa para encontrar el MCM de dos enteros positivos de su factorización prima?

Se me ocurren dos formas de resolverlo:

1. Enfoque ingenuo ()

#include
#include
int main ()
{
int num1, num2, x, y;
scanf (“% d% d”, & num1, & num2);
x = num1;
y = num2;
while (num1! = num2)
{
si (num1 <num2)
num1 = num1 + x;
de lo contrario num2 = num2 + y;
}
printf (“% d”, num1);
devuelve 0;
}

2. Considerando el hecho de que:

a * b = mcm (a, b) * mcd (a, b)
por lo tanto, mcm (a, b) = (a * b) / mcd (a, b)

ahora primero encontramos mcd usando recursividad y luego con esta fórmula podemos encontrar fácilmente el mcm de los dos números dados.

***** pseudocódigo *****

int gcd (int num1, int num2)
{
si (num1 == num2)
return num1;
if (num1> num2)
return gcd (num1-num2, num2);
return gcd (num1, num2-num1);
}

int mcm (int num1, int num2)
{
return (num1 * num2) / mcd (num1, num2);
}