/*
  mcd1(A,B,M)

  Predicado que comprueba si M es el máximo común divisor de A e B usando el algoritmo de Euclides

  Argumentos
  + A:
    - Significado: número entero
    - Tipo: entrada
  + B:
    - Significado: número entero
    - Tipo: entrada
  + R: 
    - Significado: número entero
    - Tipo: entrada y salida

  Variable local
  + A1:
    - Significado: número entero
    - Tipo: entrada
*/


mcd1(A,B,R):- B =:= 0, R is A.

mcd1(A,B,R):-
	A1 is A mod B,
	mcd1(B,A1,R).
/*
  mcd2(A,B,M)

  Predicado que comprueba si M es el máximo común divisor de A e B usando el algoritmo de Euclides

  Argumentos
  + A:
    - Significado: número entero
    - Tipo: entrada
  + B:
    - Significado: número entero
    - Tipo: entrada
  + R: 
    - Significado: número entero
    - Tipo: entrada y salida

  Variable local
  + A1:
    - Significado: número entero
    - Tipo: entrada
*/


mcd2(A,0,R):- R is A.

mcd2(A,B,R):-
	A1 is A mod B,
	mcd2(B,A1,R).

/*
  mcd3(A,B,M)

  Predicado que comprueba si M es el máximo común divisor de A e B usando el algoritmo de Euclides

  Argumentos
  + A:
    - Significado: número entero
    - Tipo: entrada
  + B:
    - Significado: número entero
    - Tipo: entrada
  + R: 
    - Significado: número entero
    - Tipo: entrada y salida

  Variable local
  + A1:
    - Significado: número entero
    - Tipo: entrada
*/


mcd3(A,0,A).

mcd3(A,B,R):-
	A1 is A mod B,
	mcd3(B,A1,R).




