Calculadora de Aritmética Modular

Calculadora de aritmética modular gratis. Calcula operaciones módulo, inversa modular, exponenciación modular y resuelve ecuaciones modulares.

Calcula operaciones de aritmética modular incluyendo módulo, inversa modular y exponenciación modular para criptografía y teoría de números.

¿Qué es la Aritmética Modular?

La aritmética modular es un sistema de aritmética para enteros donde los números "dan la vuelta" después de alcanzar un cierto valor (el módulo). A menudo se describe como "aritmética de reloj".

La expresión a mod m da el resto cuando a se divide entre m. Por ejemplo, 17 mod 5 = 2 porque 17 = 3 × 5 + 2.

Operaciones Básicas

La aritmética modular soporta todas las operaciones básicas:

  • Suma: (a + b) mod m = ((a mod m) + (b mod m)) mod m
  • Resta: (a - b) mod m = ((a mod m) - (b mod m)) mod m
  • Multiplicación: (a × b) mod m = ((a mod m) × (b mod m)) mod m

Exponenciación Modular

La exponenciación modular calcula a^b mod m eficientemente usando el algoritmo de cuadrado y multiplicación. Esto es crucial para el cifrado RSA.

Por ejemplo, 3^5 mod 7 = 243 mod 7 = 5.

Inversa Modular

La inversa modular de a módulo m es un número x tal que:

a × x ≡ 1 (mod m)

Una inversa modular existe solo cuando a y m son coprimos (mcd(a, m) = 1). Se calcula usando el Algoritmo Euclidiano Extendido.

Por ejemplo, la inversa de 3 mod 7 es 5, porque 3 × 5 = 15 ≡ 1 (mod 7).

Aplicaciones de la Aritmética Modular

La aritmética modular es fundamental en muchas áreas:

  • Criptografía: Cifrado RSA, intercambio de claves Diffie-Hellman
  • Ciencias de la Computación: Funciones hash, sumas de verificación, generación de números aleatorios
  • Teoría de Números: Pruebas de primalidad, algoritmos de factorización
  • Teoría de Codificación: Códigos de detección y corrección de errores
  • Teoría Musical: Técnica de doce tonos y clase de altura
  • Cálculos de Calendario: Algoritmos del día de la semana

¿Por qué 17 mod 5 = 2 y no -3?

Ambas respuestas son matemáticamente correctas en el sentido de que 2 y -3 se diferencian en 5 (el módulo), así que representan la misma clase de equivalencia módulo 5. La convención en esta calculadora — y en matemáticas, informática y criptografía — es devolver el resto no negativo: el menor valor r tal que 0 ≤ r < m. Por eso 17 mod 5 da 2 (porque 17 = 3 × 5 + 2) y -3 mod 5 también da 2 (porque -3 = -1 × 5 + 2). Es el módulo "euclidiano" o "floor". Algunos lenguajes (C, Java, JavaScript con %) usan módulo "truncado" que conserva el signo del dividendo — así -3 % 5 en JavaScript devuelve -3, no 2. Esta calculadora usa la convención matemática porque es inequívoca y coincide con los manuales de teoría de números y criptografía.

¿Cuándo existe la inversa modular?

La inversa a⁻¹ mod m existe si y solo si mcd(a, m) = 1, es decir, a y m no comparten ningún factor común distinto de 1 — son coprimos. Ejemplo: 3 mod 7 — mcd(3, 7) = 1, así que la inversa existe, y es 5 (porque 3 × 5 = 15 ≡ 1 mod 7). Ejemplo: 6 mod 9 — mcd(6, 9) = 3, no existe inversa. Se calcula con el Algoritmo Euclidiano Extendido, que produce el mcd y la inversa a la vez. La condición es crítica para RSA: el exponente de cifrado e y la función φ(n) deben ser coprimos, si no la clave privada no se puede derivar. Esta calculadora reporta «no hay inversa» cuando mcd > 1, en vez de dar silenciosamente una respuesta equivocada.

¿Por qué la exponenciación modular es importante para RSA?

El cifrado RSA calcula c = m^e mod n, donde m es el mensaje, e es el exponente público (normalmente 65537) y n es el módulo público (normalmente 2048 o 4096 bits). Para n de 2048 bits, los valores pueden tener cientos de dígitos. Calcular m^e primero y luego reducir módulo n es imposible — el valor intermedio sería astronómicamente grande, mucho más de lo que cualquier ordenador puede almacenar. El algoritmo de cuadrado y multiplicación (también llamado exponenciación modular por cuadraturas sucesivas) entrelaza el elevado al cuadrado con la reducción módulo n, manteniendo todos los intermedios menores que n. Para e = 65537 = 2^16 + 1 solo hacen falta 17 multiplicaciones modulares en vez de 65536 — un factor 4000 más rápido. Las librerías criptográficas serias añaden además implementaciones a tiempo constante para evitar ataques de canal lateral por tiempos.

¿En qué se diferencia a mod m de a % m en programación?

No son lo mismo. El módulo matemático (a mod m) siempre devuelve un resultado no negativo para m positivo: 0 ≤ resultado < m. El operador % depende del lenguaje. C, C++, Java, JavaScript, Go: módulo truncado — el signo sigue al dividendo, así que -7 % 3 devuelve -1. Python: módulo floor — el signo sigue al divisor, así que -7 % 3 devuelve 2. Convención matemática: -7 mod 3 = 2 (igual que Python). Al portar código criptográfico o de teoría de números de una fuente matemática a JavaScript o C, hay que tratar el caso negativo: ((a % m) + m) % m da el resultado matemático correcto independientemente del signo. Esta calculadora implementa la convención matemática, así que los resultados coinciden con los manuales sin importar el lenguaje desde el que llegues.

¿Por qué se llama «aritmética del reloj»?

Porque la esfera de un reloj es el ejemplo más familiar. Un reloj de 12 horas funciona en módulo 12: 11 + 4 horas = 3, porque 11 + 4 = 15 y 15 mod 12 = 3. El tiempo «da la vuelta» por el módulo igual que la aritmética modular. Un reloj militar de 24 horas funciona en módulo 24, los días de la semana en módulo 7 y los ángulos en módulo 360° (o 2π radianes). Siempre que hay una magnitud cíclica — ángulos, días, horas, clases de tono musicales, valores de matiz de color — la aritmética modular es el marco natural. La metáfora del reloj se popularizó en Disquisitiones Arithmeticae de Gauss (1801), la obra fundacional de la aritmética modular, donde introdujo la notación ≡ de congruencia que aún usamos.

¿Puede el módulo ser negativo o cero?

Cero, nunca — la división por cero no está definida y a mod 0 no tiene sentido. Esta calculadora rechaza módulo = 0 con error. El módulo negativo es matemáticamente válido pero convencionalmente se trata como positivo (-5 equivale a +5 como módulo, las clases de equivalencia son idénticas). Para que los resultados sean predecibles, esta calculadora exige un módulo entero positivo ≥ 1. Nota: mod 1 es un caso especial donde todo entero es congruente con 0 — útil en demostraciones pero trivial en cálculo. La mayoría de los usos reales tienen m ≥ 2.

¿Qué es el Pequeño Teorema de Fermat y cómo se relaciona?

El Pequeño Teorema de Fermat dice: si p es primo y a es un entero no divisible por p, entonces a^(p-1) ≡ 1 (mod p). Es la base de varias cosas: (1) Pruebas de primalidad — si encuentras algún a con mcd(a, n) = 1 pero a^(n-1) ≢ 1 mod n, entonces n es compuesto seguro. Miller-Rabin es una versión refinada de esta prueba. (2) Generación de claves RSA — el teorema es lo que hace funcionar el descifrado RSA; las matemáticas se apoyan en a^(φ(n)) ≡ 1 mod n, que generaliza Fermat a través del teorema de Euler para n no primo. (3) Criptografía de logaritmo discreto — muchos protocolos se basan en que los exponentes se reduzcan módulo p-1 cuando la base está en el grupo multiplicativo mod p. Pruébalo: 2^6 mod 7 = 64 mod 7 = 1 (con 7 primo y mcd(2,7)=1).

¿Maneja esta calculadora los números enormes de la criptografía?

Sí para entradas de tamaño normal (hasta el límite de entero seguro de JavaScript, 2^53 ≈ 9 × 10^15), pero no para tamaños de clave criptográficos (2048+ bits ≈ 600+ dígitos decimales). La calculadora corre en tu navegador con números JavaScript normales, que pierden precisión por encima de 2^53. Para cálculos criptográficos reales, las librerías usan enteros de precisión arbitraria con BigInt (disponible en navegadores modernos) — abre la consola y prueba (3n ** 5n) % 7n para aritmética BigInt. Para el día a día — deberes de teoría de números, análisis de funciones hash, cálculos de calendario, demostraciones de RSA con clave pequeña — la precisión de esta calculadora sobra. Para cifrado real, usa una librería revisada como OpenSSL o libsodium, no escribas tu propia implementación.