/* Asignatura: Programación II 
   Curso: Curso 2020-2021
   Ejercicios: Ejemplo inicial
 */

#include <iostream>
using namespace std;

// Ejercicio: Máximo común divisor mcd(a,b): si a>b mcd(a,b)=mcd(a-b,b); si a<b mcd(a,b)=mcd(a,b-a); si a=b mcd(a,b)=a 
// Versión iterativa
int mcd_iterativo(int a,int b) {
   int resultado=a;	
   while (a!=b)	{
      if (a>b) a=a-b;	
	  else b=b-a;	
	  resultado=a;	
   }
   return resultado;
}
// Versión recursiva
int mcd_recursivo(int a,int b) {
   if (a==b)
      return a;
   else if (a>b) return mcd_recursivo(a-b,b);
		else return mcd_recursivo(a,b-a);   	  	
}
/* Programa principal */
int main() {
   int numero1, numero2;
   cout << "Introduce el primer dato: ";  cin >> numero1;
   cout << "Introduce el segundo dato: "; cin >> numero2;	
   int maximo_cdI=mcd_iterativo(numero1,numero2);
   cout << "ITERACION mcd(" << numero1 << "," << numero2 << ") = " << maximo_cdI << endl; 
   int maximo_cdR=mcd_recursivo(numero1,numero2);
   cout << "RECURSION mcd(" << numero1 << "," << numero2 << ") = " << maximo_cdR; 
}
