Máximo Común Divisor (MCD)

Es el máximo número entero que divide un conjunto de dos o más números enteros sin dejar residuo.

De dos números naturales

Utilizaremos el algoritmo de Euclides para hallar el MCD de dos números naturales X e Y.

  1. \(MCD(X, 0) = X\)
  2. \(MCD(0, Y) = Y\)
  3. \(MCD(0, 0) = 0\)
  4. Si \(X = A \times Y + R\) donde \(A \neq 0\) entonces \(MCD(X, Y) = MCD(Y,R)\)
  5. Repetir paso 4 hasta que \(R = 0\)

En R:

mcd2 = function (x, y) {
  mayor = max(x, y)
  menor = min(x, y)
  r = mayor %% menor
  if (!(x & y)) {
   menor = mayor
  } else {
      while (r != 0) {
        mayor = r
        r = menor %% r
        menor = mayor
    }
  }
  abs(menor)
}
mcd2(0, 12)
## [1] 12
mcd2(12, 16)
## [1] 4
mcd2(-12, 16)
## [1] 4

En Python:

import math

def mcd2(x, y):
    mayor = max(x, y)
    menor = min(x, y)
    if ((x and y) == 0):
       menor = mayor
    else:
        r = mayor % menor
        while r != 0:
            mayor = r
            r = menor%r
            menor = mayor
    return math.fabs(menor)
mcd2(0, 12)
## 12.0
mcd2(12, 16)
## 4.0
mcd2(-12, 16)
## 4.0

De 2 o más números naturales

Utilizaremos la función para hallar el MCD de dos números enteros y la propiedad:

\[MCD(X, Y, Z) = MCD(X, MCD(Y,Z))\]

En R:

mcd = function (...) {
  numeros = c(...)
  resultado = mcd2(numeros[1], numeros[2])
  if (length(numeros) > 2) {
    for(n in numeros[3:length(numeros)]) {
    resultado = mcd2(resultado, n)
    }
  }
  abs(resultado)
}
mcd(12, 16)
## [1] 4
mcd(42, 56, 98)
## [1] 14
mcd(0, 56, 98)
## [1] 14

En Python:

def mcd(*n):
    numeros = list(n)
    resultado = mcd2(numeros[0], numeros[1])
    if len(numeros) > 2:
        for n in numeros[2:]:
            resultado = mcd2(resultado, n)
    return math.fabs(resultado)
mcd(12, 16)
## 4.0
mcd(42, 56, 98)
## 14.0
mcd(0, 56, 98)
## 14.0

Mínimo común múltiplo

Es el menor número natural distinto de cero que es múltiplo común de un conjunto de 2 o más números naturales.

Utilizaremos la función para hallar el MCD de 2 o más números naturales y la propiedad:

\[MCM(X_1, X_2, ... , X_i) = \frac{X_1 \times X_2 \times ... \times X_i}{MCD(X_1, X_2, ..., X_i)^{i -1}} \]

En R:

mcm = function (...) {
  numeros = c(...)
  if (prod(numeros) != 0) {
    resultado = prod(numeros)/mcd(numeros)^(length(numeros) - 1)
  } else {
    resultado = NaN
  }
  abs(resultado)
}
mcm(3, 6, 7)
## [1] 126
mcm(-3, 6, 7)
## [1] 126
mcm(0, 6, 7)
## [1] NaN

En Python:

import numpy as np

def mcm(*n):
    numeros = list(n)
    if np.prod(numeros) != 0:
        resultado = np.prod(numeros)/mcd(*n)**(len(numeros) - 1)
    else:
        resultado = float('nan')
    return math.fabs(resultado)
mcm(3, 6, 7)
## 126.0
mcm(-3, 6, 7)
## 126.0
mcm(0, 6, 7)
## nan

\[\ \]

Contacto:
Fiverr
Twitter
edison.lmg@gmail.com

\[\ \]