Este código permite calcular el Máximo Común Divisor entre dós números usando el algoritmo euclidiano. Sólo debes copiar y pegar este código.
'Maximo comun divisor - Algoritmo euclidiano
Function MaxComDiv(A, B)
'C almacena divisores, pero al final termina en valor 0
C = MCD1(A, B)
'D almacena el posible valor final de MaxComDiv, que es el valor de C antes de llegar a cero
D = C
'Primera verificación de MaxComDiv, B es el MaxComDiv de A
If A > B Then
'PEQ - Número más pequeño entre parámetros A y B
PEQ = B
'GDE - Número más grande entre parámetros A y B
GDE = A
Else
PEQ = A
GDE = B
End If
If GDE / PEQ = Int(GDE / PEQ) Then
MaxComDiv = PEQ
'Si la primera verificación no funciona, usar algoritmo euclidiano
Else
'Empiezan las iteraciones de A, B, C y D hasta llegar al MaxComDiv
'B pasa a ser A
'C pasa a ser B
'Se recalcula C para ver si C alcanza valor cero
'Si C es cero, D es el C anterior, D es el MaxComDiv
Do Until C = 0
A = B
B = C
C = MCD1(A, B)
If C = 0 Then
MaxComDiv = D
Else
D = C
End If
Loop
End If
End Function
'MCD1 - Funcion auxiliar para encapsular y acortar el codigo.
Function MCD1(A, B)
'GDE = PEQ * q + r
'El último valor r que no tenga valor 0 es el máximo comun divisor
If A > B Then
PEQ = B
GDE = A
Else
PEQ = A
GDE = B
End If
q = Int(GDE / PEQ) * PEQ
r = GDE - q
MCD1 = r
End Function
Para usar el código sólo llamas a la función y le das dos valores. Mira estos ejemplos:
Sub test()
A = 3768
B = 1701
MsgBox MaxComDiv(A, B)
End Sub
Sub test2()
A = 18
B = 2
MsgBox MaxComDiv(A, B)
End Sub
El algoritmo euclidiano es un método computacionalmente eficiente, y tiene muchas aplicaciones.