Calculadora de logaritmos discretos

El problema de los logaritmos discretos consiste en hallar el exponente en la expresión BaseExponente = Potencia (mod Módulo).

Esta aplicación funciona para modulos primos y compuestos. La única restricción es que la base y el módulo, y la potencia y el módulo deben ser primos entre sí.

En esta versión de la calculadora de logaritmos discretos está implementado el algoritmo Pohlig-Hellman, así que el tiempo de ejecución es proporcional a la raíz cuadrada del mayor factor primo del módulo menos 1. El applet responde en un período de tiempo razonable si este factor es menor que 1017.

Se pueden ingresar expresiones que usen los siguientes operadores y paréntesis:

  • + para suma
  • - para resta
  • * para multiplicacion
  • / para división entera
  • % para resto
  • ^ o ** para exponenciación
  • n!: factorial
  • p#: primorial (producto de todos los primos menores o iguales a p).
  • B(n): Número probablemente primo anterior a n
  • F(n): Número de Fibonacci Fn
  • L(n): Número de Lucas Ln = Fn-1 + Fn+1
  • N(n): Número probablemente primo posterior a n
  • P(n): particiones irrestrictas (cantidad de descomposiciones de n en sumas de números enteros sin tener en cuenta el orden).
  • Gcd(m,n): Máximo común divisor de estos dos números enteros.
  • Modinv(m,n): inverso de m modulo n, sólo válido cuando gcd(m,n)=1.
  • Modpow(m,n,r): halla mn módulo r.

Puedes usar el prefijo 0x para números hexadecimales, por ejemplo 0x38 es igual a 56.

El símbolo de exponenciación no está presente en algunos dispositivos móviles, así que es posible digitar dos asteriscos ** para el operador de exponenciación.

Ejemplo: Hallar el número n tal que 7n ≡ 23 (mod 43241).

Digita 7 en la caja de entrada de Base, 23 en la caja de Potencia y 43241 en la caja Mod. Luego aprieta el botón denominado "Logaritmo discreto".

El resultado es 3360 + 3930 k, donde k puede ser cualquier número entero. Como verificación puedes hallar 73360 ≡ 23 (mod 43241) y 73930 ≡ 1 (mod 43241)

Código fuente

Puedes bajar el código fuente del programa actual y del viejo applet de cálculo de logaritmos discretos desde GitHub. El código fuente está escrito en lenguaje C, por lo que es necesario Emscripten para generar Javascript.

Escrito por Dario Alpern. Actualizado el 13 de diciembre de 2018.

Si encuentra algún error o tiene algún comentario, por favor llene el formulario.