Es el máximo número entero que divide un conjunto de dos o más números enteros sin dejar residuo.
Utilizaremos el algoritmo de Euclides para hallar el MCD de dos números naturales X e Y.
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
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
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
\[\ \]
\[\ \]