En matemáticas , el máximo común divisor ( MCD ), también conocido como máximo común divisor (MCD) , de dos o más números enteros , que no sean todos cero, es el mayor entero positivo que divide a cada uno de los números enteros. Para dos números enteros x , y , el máximo común divisor de x e y se denota como . Por ejemplo, el MCD de 8 y 12 es 4, es decir, mcd(8, 12) = 4. [ 1] [2]
En el nombre "máximo común divisor", el adjetivo "máximo" puede reemplazarse por "más alto", y la palabra "divisor" puede reemplazarse por "factor", de modo que otros nombres incluyen máximo común divisor , etc. [3] [4] [5] [6] Históricamente, otros nombres para el mismo concepto han incluido máximo común medida . [7]
Esta noción puede extenderse a polinomios (ver Máximo común divisor de polinomios ) y otros anillos conmutativos (ver § En anillos conmutativos más abajo).
El máximo común divisor (MCD) de los números enteros a y b , de los cuales al menos uno es distinto de cero, es el mayor número entero positivo d tal que d sea divisor tanto de a como de b ; es decir, hay números enteros e y f tales que a = de y b = df , y d es el mayor de dichos números enteros. El MCD de a y b se denota generalmente como mcd( a , b ) . [8]
Cuando uno de a y b es cero, el MCD es el valor absoluto del entero distinto de cero: mcd( a , 0) = mcd(0, a ) = | a | . Este caso es importante porque es el paso final del algoritmo euclidiano.
La definición anterior no es adecuada para definir mcd(0, 0) , ya que no existe un entero máximo n tal que 0 × n = 0 . Sin embargo, cero es su propio máximo divisor si se entiende por máximo en el contexto de la relación de divisibilidad, por lo que mcd(0, 0) se define comúnmente como 0 . Esto conserva las identidades habituales para mcd, y en particular la identidad de Bézout , es decir, que mcd( a , b ) genera el mismo ideal que { a , b } . [9] [10] [11] Esta convención es seguida por muchos sistemas de álgebra computacional . [12] No obstante, algunos autores dejan mcd(0, 0) sin definir. [13]
El MCD de a y b es su máximo común divisor positivo en la relación de preorden de divisibilidad . Esto significa que los divisores comunes de a y b son exactamente los divisores de su MCD. Esto se demuestra comúnmente utilizando el lema de Euclides , el teorema fundamental de la aritmética o el algoritmo de Euclides . Este es el significado de "máximo" que se utiliza para las generalizaciones del concepto de MCD.
El número 54 se puede expresar como producto de dos números enteros de varias maneras diferentes:
Así, la lista completa de divisores de 54 es 1, 2, 3, 6, 9, 18, 27, 54. De manera similar, los divisores de 24 son 1, 2, 3, 4, 6, 8, 12, 24. Los números que estas dos listas tienen en común son los divisores comunes de 54 y 24, es decir,
De estos, el mayor es 6, por lo que es el máximo común divisor :
Calcular todos los divisores de dos números de esta manera no suele ser eficiente, especialmente para números grandes que tienen muchos divisores. En § Cálculo se describen métodos mucho más eficientes .
Dos números se denominan relativamente primos, o coprimos , si su máximo común divisor es igual a 1. [14] Por ejemplo, 9 y 28 son coprimos .
Por ejemplo, un área rectangular de 24 por 60 se puede dividir en una cuadrícula de: cuadrados de 1 por 1, cuadrados de 2 por 2, cuadrados de 3 por 3, cuadrados de 4 por 4, cuadrados de 6 por 6 o cuadrados de 12 por 12. Por lo tanto, 12 es el máximo común divisor de 24 y 60. Un área rectangular de 24 por 60 se puede dividir en una cuadrícula de cuadrados de 12 por 12, con dos cuadrados a lo largo de un borde ( 24/12 = 2 ) y cinco cuadrados a lo largo del otro ( 60/12 = 5 ).
El máximo común divisor es útil para reducir fracciones a sus términos más bajos . [15] Por ejemplo, mcd(42, 56) = 14 , por lo tanto,
El mínimo común múltiplo de dos números enteros que no sean ambos cero se puede calcular a partir de su máximo común divisor, utilizando la relación
Los máximos comunes divisores se pueden calcular determinando las factorizaciones primas de los dos números y comparando los factores. Por ejemplo, para calcular mcd(48, 180) , encontramos las factorizaciones primas 48 = 2 4 · 3 1 y 180 = 2 2 · 3 2 · 5 1 ; el MCD es entonces 2 min(4,2) · 3 min(1,2) · 5 min(0,1) = 2 2 · 3 1 · 5 0 = 12 El MCM correspondiente es entonces 2 max(4,2) · 3 max(1,2) · 5 max(0,1) = 2 4 · 3 2 · 5 1 = 720.
En la práctica, este método sólo es viable para números pequeños, ya que calcular factorizaciones primas lleva demasiado tiempo.
El método introducido por Euclides para calcular el máximo común divisor se basa en el hecho de que, dados dos números enteros positivos a y b tales que a > b , los divisores comunes de a y b son los mismos que los divisores comunes de a – b y b .
Entonces, el método de Euclides para calcular el máximo común divisor de dos números enteros positivos consiste en reemplazar el número mayor con la diferencia de los números y repetir esto hasta que los dos números sean iguales: ese es su máximo común divisor.
Por ejemplo, para calcular mcd(48,18) , se procede de la siguiente manera:
Entonces mcd(48, 18) = 6 .
Este método puede resultar muy lento si un número es mucho mayor que el otro, por lo que generalmente se prefiere la variante que se indica a continuación.
Un método más eficiente es el algoritmo euclidiano , una variante en la que la diferencia de los dos números a y b se sustituye por el resto de la división euclidiana (también llamada división con resto ) de a por b .
Al denotar este resto como a módulo b , el algoritmo reemplaza ( a , b ) con ( b , a módulo b ) repetidamente hasta que el par sea ( d , 0) , donde d es el máximo común divisor.
Por ejemplo, para calcular mcd(48,18), el cálculo es el siguiente:
Esto nuevamente da como resultado mcd(48, 18) = 6 .
El algoritmo binario MCD es una variante del algoritmo de Euclides especialmente adaptada a la representación binaria de los números, que se utiliza en la mayoría de los ordenadores .
El algoritmo binario MCD se diferencia del algoritmo de Euclides esencialmente en que divide por dos cada número par que se encuentra durante el cálculo. Su eficiencia resulta del hecho de que, en la representación binaria, la prueba de paridad consiste en probar el dígito más a la derecha, y la división por dos consiste en eliminar el dígito más a la derecha.
El método es el siguiente, comenzando con a y b que son los dos números enteros positivos cuyo MCD se busca.
El paso 1 determina que d es la potencia más alta de 2 que divide a y b y, por lo tanto, su máximo común divisor. Ninguno de los pasos cambia el conjunto de los divisores comunes impares de a y b . Esto demuestra que cuando el algoritmo se detiene, el resultado es correcto. El algoritmo se detiene eventualmente, ya que cada paso divide al menos uno de los operandos por al menos 2. Además, el número de divisiones por 2 y, por lo tanto, el número de restas es, como máximo, el número total de dígitos.
Ejemplo: ( a , b , d ) = (48, 18, 0) → (24, 9, 1) → (12, 9, 1) → (6, 9, 1) → (3, 9, 1) → (3, 3, 1) ; el MCD original es entonces el producto 6 de 2 d = 2 1 y a = b = 3 .
El algoritmo binario MCD es particularmente fácil de implementar y particularmente eficiente en computadoras binarias. Su complejidad computacional es
El cuadrado de esta complejidad proviene del hecho de que la división por 2 y la resta toman un tiempo proporcional al número de bits de la entrada.
La complejidad computacional se expresa generalmente en términos de la longitud n de la entrada. Aquí, esta longitud es n = log a + log b , y la complejidad es, por lo tanto
El algoritmo de Lehmer se basa en la observación de que los cocientes iniciales producidos por el algoritmo de Euclides se pueden determinar basándose únicamente en los primeros dígitos; esto es útil para números que son más grandes que una palabra de computadora . En esencia, se extraen los dígitos iniciales, que normalmente forman una o dos palabras de computadora, y se ejecutan los algoritmos de Euclides en estos números más pequeños, siempre que se garantice que los cocientes sean los mismos que los que se obtendrían con los números originales. Los cocientes se recopilan en una pequeña matriz de transformación de 2 por 2 (una matriz de números enteros de una sola palabra) para reducir los números originales. Este proceso se repite hasta que los números sean lo suficientemente pequeños como para que el algoritmo binario (ver a continuación) sea más eficiente.
Este algoritmo mejora la velocidad, ya que reduce el número de operaciones con números muy grandes y puede utilizar aritmética de hardware para la mayoría de las operaciones. De hecho, la mayoría de los cocientes son muy pequeños, por lo que se puede recopilar una buena cantidad de pasos del algoritmo euclidiano en una matriz de 2 por 2 de números enteros de una sola palabra. Cuando el algoritmo de Lehmer encuentra un cociente demasiado grande, debe recurrir a una iteración del algoritmo euclidiano, con una división euclidiana de números grandes.
Si a y b son ambos distintos de cero, el máximo común divisor de a y b se puede calcular utilizando el mínimo común múltiplo (MCM) de a y b :
pero más comúnmente el MCM se calcula a partir del MCD.
Usando la función f de Thomae ,
que se generaliza a números racionales a y b o números reales conmensurables .
Keith Slavin ha demostrado que para un número impar ≥ 1 :
que es una función que puede evaluarse para el complejo b . [16] Wolfgang Schramm ha demostrado que
es una función entera en la variable b para todos los enteros positivos a donde c d ( k ) es la suma de Ramanujan . [17]
La complejidad computacional del cálculo de máximos comunes divisores ha sido ampliamente estudiada. [18] Si se utiliza el algoritmo euclidiano y los algoritmos elementales de multiplicación y división, el cálculo del máximo común divisor de dos números enteros de como máximo n bits es O ( n 2 ) . Esto significa que el cálculo del máximo común divisor tiene, hasta un factor constante, la misma complejidad que la multiplicación.
Sin embargo, si se utiliza un algoritmo de multiplicación rápido, se puede modificar el algoritmo euclidiano para mejorar la complejidad, pero el cálculo de un máximo común divisor se vuelve más lento que la multiplicación. Más precisamente, si la multiplicación de dos números enteros de n bits toma un tiempo de T ( n ) , entonces el algoritmo más rápido conocido para el máximo común divisor tiene una complejidad O ( T ( n ) log n ) . Esto implica que el algoritmo más rápido conocido tiene una complejidad de O ( n (log n ) 2 ) .
Las complejidades anteriores son válidas para los modelos habituales de computación , específicamente las máquinas de Turing multicinta y las máquinas de acceso aleatorio .
El cálculo de los máximos comunes divisores pertenece, por tanto, a la clase de problemas resolubles en tiempo cuasilineal . A fortiori , el problema de decisión correspondiente pertenece a la clase P de problemas resolubles en tiempo polinomial. No se sabe que el problema de MCD esté en NC , por lo que no hay una forma conocida de paralelizarlo de manera eficiente; ni se sabe que sea P-completo , lo que implicaría que es poco probable que sea posible paralelizar de manera eficiente el cálculo de MCD. Shallcross et al. demostraron que un problema relacionado (EUMCD, que determina la secuencia de restos que surge durante el algoritmo euclidiano) es NC-equivalente al problema de programación lineal entera con dos variables; si cualquiera de los problemas está en NC o es P-completo , el otro también lo es. [19] Dado que NC contiene NL , también se desconoce si existe un algoritmo eficiente en el espacio para calcular el MCD, incluso para máquinas de Turing no deterministas.
Aunque no se sabe que el problema esté en NC , existen algoritmos paralelos asintóticamente más rápidos que el algoritmo euclidiano; el algoritmo determinista más rápido conocido es el de Chor y Goldreich , que (en el modelo CRCW-PRAM ) puede resolver el problema en tiempo O ( n /log n ) con n 1+ ε procesadores. [20] Los algoritmos aleatorios pueden resolver el problema en tiempo O ((log n ) 2 ) en procesadores [ aclaración necesaria ] (esto es superpolinomial ). [21]
donde es la valoración p -ádica. (secuencia A018804 en la OEIS )
En 1972, James E. Nymann demostró que k números enteros, elegidos de forma independiente y uniforme de {1, ..., n } , son coprimos con probabilidad 1/ ζ ( k ) cuando n tiende a infinito, donde ζ se refiere a la función zeta de Riemann . [24] (Ver coprimos para una derivación). Este resultado se amplió en 1987 para mostrar que la probabilidad de que k números enteros aleatorios tengan el máximo común divisor d es d − k /ζ( k ) . [25]
Con esta información, se puede ver (informalmente) que el valor esperado de la función máximo común divisor no existe cuando k = 2. En este caso, la probabilidad de que el MCD sea igual a d es d −2 / ζ (2) , y como ζ (2) = π 2 /6 tenemos
Esta última suma es la serie armónica , que diverge. Sin embargo, cuando k ≥ 3 , el valor esperado está bien definido y, por el argumento anterior, es
Para k = 3 , esto es aproximadamente igual a 1,3684. Para k = 4 , es aproximadamente 1,1106.
La noción de máximo común divisor se puede definir de forma más general para los elementos de un anillo conmutativo arbitrario , aunque en general no es necesario que exista uno para cada par de elementos. [26]
Con esta definición, dos elementos a y b pueden tener varios máximos comunes divisores, o ninguno. Si R es un dominio entero , entonces dos MCD cualesquiera de a y b deben ser elementos asociados , ya que por definición cualquiera de ellos debe dividir al otro. De hecho, si existe un MCD, cualquiera de sus asociados también es un MCD.
La existencia de un MCD no está asegurada en dominios integrales arbitrarios. Sin embargo, si R es un dominio de factorización única o cualquier otro dominio de MCD , entonces dos elementos cualesquiera tienen un MCD. Si R es un dominio euclidiano en el que la división euclidiana se da algorítmicamente (como es el caso, por ejemplo, cuando R = F [ X ] donde F es un cuerpo , o cuando R es el anillo de números enteros gaussianos ), entonces los máximos comunes divisores se pueden calcular utilizando una forma del algoritmo euclidiano basada en el procedimiento de división.
El siguiente es un ejemplo de un dominio integral con dos elementos que no tienen MCD:
Los elementos 2 y 1 + √ −3 son dos divisores comunes máximos (es decir, cualquier divisor común que sea múltiplo de 2 está asociado a 2 , lo mismo vale para 1 + √ −3 , pero no están asociados, por lo que no existe un máximo común divisor de a y b .
En correspondencia con la propiedad de Bézout, podemos, en cualquier anillo conmutativo, considerar la colección de elementos de la forma pa + qb , donde p y q se extienden a lo largo del anillo. Este es el ideal generado por a y b , y se denota simplemente ( a , b ) . En un anillo cuyos ideales son todos principales (un dominio ideal principal o PID), este ideal será idéntico al conjunto de múltiplos de algún elemento del anillo d ; entonces este d es un máximo común divisor de a y b . Pero el ideal ( a , b ) puede ser útil incluso cuando no hay un máximo común divisor de a y b . (De hecho, Ernst Kummer utilizó este ideal como reemplazo de un MCD en su tratamiento del Último Teorema de Fermat , aunque lo imaginó como el conjunto de múltiplos de algún elemento hipotético o ideal del anillo d , de donde proviene el término teórico del anillo).