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). |
Qué es la congruencia y la aritmética modular (cálculo de mod)
La aritmética modular (o cálculo de congruencias) es una operación que se centra únicamente en el resto que se obtiene al dividir un número entre un entero positivo llamado módulo. Cuando dos números enteros, a y b, dan el mismo resto al dividirlos por un mismo módulo n, se dice que "a y b son congruentes módulo n", y se escribe a ≡ b (mod n). Esta herramienta reúne en un solo lugar los cuatro cálculos más habituales relacionados con la congruencia: "mod básico", "suma, resta y multiplicación", "exponenciación" e "inverso".
Todos los cálculos internos se realizan con el tipo BigInt nativo de JavaScript, de modo que se obtienen resultados exactos, sin errores de redondeo, incluso con exponentes de cientos de dígitos o con sumas, restas y multiplicaciones entre enteros muy largos. Si se introduce un número negativo, el resultado se normaliza siguiendo la definición matemática de la congruencia (el resultado siempre queda dentro del rango entre 0 y el módulo menos uno), de manera que no hay que preocuparse por las diferencias de comportamiento del operador de resto entre distintos lenguajes de programación.
Cómo usar la calculadora de aritmética modular
- Elige el modo Selecciona uno de los cuatro modos disponibles — "mod básico", "suma/resta/multiplicación", "exponenciación" o "inverso" — según el cálculo que necesites.
- Introduce los números enteros Según el modo elegido, escribe a, b y el módulo n (o bien la base y el exponente). También se admiten números enteros negativos.
- Selecciona el operador (solo en el modo suma/resta/multiplicación) Elige suma, resta o multiplicación en el menú desplegable.
- Consulta el resultado El resultado se recalcula automáticamente con cada cambio y se muestra junto con la fórmula completa. Si no existe inverso, aparece un mensaje explicándolo en su lugar.
- Reinicia los campos si lo necesitas El botón "Borrar" vacía los campos de entrada de los cuatro modos a la vez.
Consejos para aprovecharla mejor
- 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.
Situaciones en las que resulta útil la aritmética modular
Comprender la criptografía de clave pública (RSA)
El cifrado y descifrado de RSA consisten, en esencia, en calcular el resto de elevar un número enorme a una potencia y dividirlo entre un módulo. Con el modo de exponenciación puedes usar un exponente y un módulo grandes y comprobar en persona la velocidad de la elevación al cuadrado sucesiva.
Estudiar el diseño de funciones hash
Muchas funciones hash utilizan internamente la operación módulo para reducir un valor a un rango fijo de tamaño de tabla. El modo de suma/resta/multiplicación permite seguir paso a paso cómo cambia el resto en cada operación intermedia.
Verificar dígitos de control (check digits)
Los dígitos de control del ISBN, de los números de tarjetas de crédito y de las cuentas bancarias se obtienen a partir del resto de dividir una suma ponderada de las cifras entre un módulo determinado. El modo de mod básico sirve para comprobar a mano ese tipo de cálculos.
Calcular ciclos de calendario y días de la semana
Preguntas como "¿qué día de la semana caerá dentro de n días?" o "¿cada cuántos años se repite un año bisiesto?" se pueden expresar como congruencias con módulo 7 o módulo 4, respectivamente.
Comprobar resultados en programación competitiva
En el tipo de problema habitual que pide "la respuesta módulo 1.000.000.007", puedes usar el modo de exponenciación y el de suma/resta/multiplicación para verificar si el resultado de tu propia implementación es correcto.
Glosario de aritmética modular
- Congruencia
- Una expresión de la forma a ≡ b (mod n) que indica que a y b dan el mismo resto al dividirlos entre n. Se usa el símbolo "≡" en lugar de "=" porque lo que coincide no son los valores en sí, sino sus restos.
- Módulo
- El número entre el que se divide. En esta herramienta debe ser un entero igual o mayor que 1. Al cambiar el módulo, la relación de congruencia entre los mismos números también cambia.
- Operación de módulo (resto)
- El cálculo concreto del resto de dividir un número entre el módulo. Según la definición matemática, el resultado siempre queda entre 0 y el módulo menos uno.
- Inverso modular
- Un entero x que satisface a × x ≡ 1 (mod n). Dentro de la aritmética modular, multiplicar por el inverso de a produce el mismo efecto que "dividir entre a", operación que de otro modo no está definida.
- Coprimos (primos entre sí)
- Se dice de dos números enteros cuyo máximo común divisor es 1. El inverso de a módulo n existe únicamente cuando a y n son coprimos.
- Algoritmo de Euclides extendido
- Un procedimiento que, además de calcular el máximo común divisor, obtiene simultáneamente un par de enteros (x, y) que satisface a × x + n × y = mcd(a, n). Es el método que emplea esta herramienta en el modo de inverso.
- Elevación al cuadrado sucesiva (exponenciación rápida)
- Un algoritmo que expresa el exponente en binario y, elevando repetidamente al cuadrado la base, multiplica el resultado solo en las posiciones correspondientes. Así se calcula una potencia con un número de multiplicaciones proporcional al número de dígitos del exponente. Es el método que utiliza el modo de exponenciación de esta herramienta.
- Exponenciación modular
- El cálculo del resto de elevar la base a una potencia y dividirla entre el módulo. Es la operación central del cifrado y descifrado en RSA, y corresponde al modo de "exponenciación" de esta herramienta.
Preguntas frecuentes
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.