Calculadora de Aritmética Modular (Calculadora de Mod)

Calculadora de aritmética modular con 4 modos: mod básico, suma/resta/multiplicación modular, exponenciación modular (exponenciación rápida por cuadrados sucesivos) e inverso modular (algoritmo de Euclides extendido). Calcula con precisión el mod de números negativos y exponentes enormes usando BigInt.

Propiedades básicas de la aritmética modular

Propiedad Descripción
(a + b) mod n = ((a mod n) + (b mod n)) mod n El resultado es el mismo tanto si se toma el mod antes como después de sumar.
(a − b) mod n = ((a mod n) − (b mod n) + n) mod n Como la resta puede dar un resultado negativo, sumar n al final y volver a tomar mod n permite mantener el resultado dentro del rango [0, n).
(a × b) mod n = ((a mod n) × (b mod n)) mod n Al igual que en la suma, tomar el mod durante la multiplicación no cambia el resultado final. Esta propiedad es la base del cálculo rápido de la exponenciación (elevación al cuadrado sucesiva).
a y n son coprimos ⇔ existe un inverso de a módulo n Solo cuando el algoritmo de Euclides extendido da como resultado gcd(a, n) = 1 existe un x (el inverso) que satisface a × x ≡ 1 (mod n).

Consejos

  • El comportamiento del mod con números negativos varía según el lenguaje de programación. Esta herramienta sigue la definición matemática (el resultado siempre está entre 0 y n − 1), por lo que -7 mod 3 da 2, no -1.
  • El modo de exponenciación utiliza la elevación al cuadrado sucesiva, por lo que devuelve resultados al instante incluso cuando el exponente tiene cientos de dígitos. El mismo algoritmo se usa en el cifrado y descifrado RSA.
  • La hora del reloj es un ejemplo cotidiano de aritmética modular: al convertir las "15:00" al formato de 12 horas se obtiene 15 mod 12 = 3 en punto.
  • El modo de inverso funciona siempre que a y n sean coprimos (su máximo común divisor sea 1), aunque n no sea primo.
  • En la programación competitiva, es habitual que los problemas pidan la respuesta módulo un número primo grande como 1.000.000.007 en lugar del número enorme sin reducir. El modo de exponenciación de esta herramienta resulta útil para comprobar ese tipo de cálculos a mano.

Preguntas frecuentes

Según la definición matemática de congruencia, el resultado del mod siempre está entre 0 y el módulo (n) menos uno. Por eso -7 mod 3 da 2 (ya que -7 = -3×3 + 2), y no el -1 que devuelve directamente el operador `%` de JavaScript. Esta herramienta sigue la definición matemática.

El inverso modular se usa cuando se quiere realizar una operación equivalente a la "división" dentro de la aritmética modular. Como la división ordinaria no está definida allí, multiplicar por el inverso de a produce el mismo efecto que dividir entre a. Se usa habitualmente en la generación de claves RSA (para obtener la clave privada) y en problemas de programación competitiva que implican fracciones cuando "la respuesta debe darse módulo un número primo grande".

Esta herramienta usa un algoritmo llamado elevación al cuadrado sucesiva, por lo que incluso con exponentes de cientos de dígitos, el cálculo solo requiere un número de multiplicaciones proporcional al número de dígitos (más exactamente, dígitos binarios) del exponente. A diferencia de calcular ingenuamente toda la potencia antes de tomar el mod, el resultado se obtiene al instante.

Un inverso de a módulo n existe únicamente cuando el máximo común divisor (mcd) de a y n es 1, es decir, cuando son coprimos. Por ejemplo, con a=4 y n=8, mcd(4, 8)=4, que no es 1, por lo que no existe ningún entero x que satisfaga 4 × x ≡ 1 (mod 8). Si n es primo, siempre existe un inverso mientras a no sea múltiplo de n.

En la práctica se usan casi como sinónimos, pero, en sentido estricto, la "congruencia" es un concepto matemático que describe la relación entre dos números que tienen el mismo resto, como en a ≡ b (mod n), mientras que la "operación módulo" se refiere al cálculo real del resto al dividir a entre n. Esta herramienta se ocupa precisamente de calcular ese resto.
ツールくん

A propósito — la "aritmética del reloj" detrás de la criptografía moderna

La aritmética modular (congruencia) suele llamarse "aritmética del reloj" (clock arithmetic). En un reloj de 12 horas, las 13:00 se tratan como "iguales" a la 1:00 — esto es exactamente la congruencia 13 ≡ 1 (mod 12), una idea que se centra únicamente en el resto al dividir un número entre un módulo (en este caso, 12). El matemático alemán Carl Friedrich Gauss sistematizó la notación "≡" para la congruencia en su libro de 1801, Disquisitiones Arithmeticae, convirtiendo esta idea en una herramienta estándar de las matemáticas modernas.

Esta operación aparentemente sencilla sustenta los cimientos de la seguridad moderna de internet. En los sistemas de clave pública como RSA, la "exponenciación modular" — calcular una potencia de un número enorme y luego tomar el resto módulo n — es la operación central del cifrado y descifrado. Como el exponente y el módulo pueden tener cientos de dígitos cada uno, calcular ingenuamente la potencia completa antes de tomar el resto haría que el cálculo se disparara. La elevación al cuadrado sucesiva, en cambio, solo requiere un número de multiplicaciones proporcional al número de dígitos del exponente, lo que la hace práctica.

El cálculo de inversos modulares mediante el algoritmo de Euclides extendido es también una técnica fundamental utilizada en muchos ámbitos de la informática, desde la criptografía hasta la teoría de códigos y el diseño de funciones hash. El hecho de que "una aritmética de más de 2000 años de antigüedad" y "la tecnología de seguridad más avanzada" se apoyen en el mismo fundamento matemático es un símbolo elocuente de la universalidad de la teoría de números.