Módulos /
tdn-3 / Capítulo 4 — Orden multiplicativo y raíces primitivas avanzadas / Lección 4.2
Disclosure de IA: al publicarse, este contenido reproducirá digitalmente, con autorización expresa del autor, la voz y fisonomía de Eduardo Espinoza Ramos. Curaduría revisada por matemáticos profesionales.
Política completa → La analogía con el logaritmo real
El logaritmo real transforma productos en sumas: log(xy)=logx+logy. El índice módulo pk hace exactamente lo mismo en aritmética modular.
Sea p primo impar y g una raíz primitiva módulo pk. Para cada a con gcd(a,p)=1, existe un único j∈{0,1,…,ϕ(pk)−1} con gj≡a(modpk). Definimos indg(a)=j, llamado el **índice de a en base g módulo pk**.
Las propiedades fundamentales son análogas al logaritmo: indg(ab)≡indg(a)+indg(b)(modϕ(pk)) y indg(an)≡n⋅indg(a)(modϕ(pk)). Estas igualdades se demuestran directamente: si a=gr y b=gs, entonces ab=gr+s y an=gnr.
indg(ab)≡indg(a)+indg(b)(modϕ(pk)) Aplicación 1: resolver $x^n \equiv a \pmod{p^k}$
Tomando índice de ambos lados, la ecuación xn≡a(modpk) se convierte en la congruencia lineal n⋅indg(x)≡indg(a)(modϕ(pk)).
Esta congruencia lineal tiene solución si y solo si d=gcd(n,ϕ(pk)) divide a indg(a). Cuando es soluble, tiene exactamente d soluciones módulo ϕ(pk), lo que da exactamente d valores de x módulo pk.
Ejemplo IMO-nivel. ¿Cuántos x∈{1,…,p2} con gcd(x,p)=1 satisfacen xp−1≡1(modp2)? Tomando índice: (p−1)⋅indg(x)≡0(modp(p−1)), es decir, p∣indg(x). Hay ϕ(p2)/(p)=p−1 múltiplos de p en {0,1,…,p(p−1)−1}. Así exactamente p−1 elementos de (Z/p2Z)∗ satisfacen xp−1≡1(modp2). Estos son precisamente los llamados números de Wieferich base x módulo p2... o simplemente los x que hacen trivial la condición de Fermat elevada.
xn≡a(modpk) tiene gcd(n,ϕ(pk)) soluciones⟺gcd(n,ϕ(pk))∣indg(a) Aplicación 2: ecuaciones $a^x \equiv b \pmod{p^k}$
La ecuación ax≡b(modpk) (con gcd(a,p)=gcd(b,p)=1) también se reduce con el índice: x⋅indg(a)≡indg(b)(modϕ(pk)).
Esta es una congruencia lineal en x. Es soluble si y solo si d=gcd(indg(a),ϕ(pk)) divide a indg(b).
Caso especial relevante en olimpiadas: ax≡1(modpk). Aquí indg(1)=0, así la condición es d∣0, que siempre se cumple. Las soluciones son x≡0(modϕ(pk)/d), es decir, los múltiplos de ϕ(pk)/gcd(indg(a),ϕ(pk)). Esto es exactamente ordpk(a), consistente con la definición.
El poder del índice es que convierte un problema multiplicativo en un problema lineal, para el cual tenemos herramientas completas (algoritmo de Euclides, TCR, etc.).
Problema clásico: el índice en acción
Problema (IMO Shortlist 1999 N1 — variante): Sea p primo impar. Demuestra que el número de pares (x,y) con 1≤x,y≤p−1 y xy≡yx(modp) es p−1+τ(p−1), donde τ es la función divisores.
Solución. Tomando índice en base g (raíz primitiva mod p) de ambos lados: y⋅ind(x)≡x⋅ind(y)(modp−1).
Sea r=ind(x) y s=ind(y), con r,s∈{0,1,…,p−2} (donde r=0 significa x=1 y s=0 significa y=1). La condición se convierte en ys≡xr ... espera, no: yr≡xs(modp−1).
Si r=0: x=1, la condición es 0≡0, verdadera para cualquier y. Eso da p−1 pares.
Si r=0 y s=0: y=1, la condición es r⋅1≡0, es decir r≡0(modp−1), lo que fuerza r=0. Contradicción. Cero pares adicionales.
Si r,s=0: la condición yr≡xs(modp−1) con x=gr y y=gs se lee gs⋅r≡gr⋅s(modp−1)... el análisis completo requiere contar las soluciones de r/s≡x/y en un sentido preciso. La respuesta final τ(p−1) cuenta los pares con x/y=gr−s una potencia de g que coincide con r/s módulo p−1. El resultado p−1+τ(p−1) es un ejercicio clásico de índices que ilustra cómo el álgebra de índices simplifica los conteos.
La tabla de índices y el cálculo práctico
En la práctica olímpica, el índice se usa en dos modos: teórico (para demostrar existencia o contar soluciones) y computacional (para resolver congruencias concretas). El modo computacional requiere conocer la tabla de índices para primos pequeños.
Para p=7, g=3 (raíz primitiva, pues ord7(3)=6): ind3(1)=0, ind3(3)=1, ind3(2)=2 (pues 32=9≡2), ind3(6)=3 (pues 33=27≡6), ind3(4)=4 (pues 34=81≡4), ind3(5)=5 (pues 35=243≡5).
Con esta tabla: x4≡2(mod7) se convierte en 4⋅ind(x)≡2(mod6), es decir, 2⋅ind(x)≡1(mod3), así ind(x)≡2(mod3). Las soluciones son ind(x)∈{2,5}, dando x∈{2,5}. Verificación: 24=16≡2 ✓, 54=625≡2 ✓.
En olimpiadas los problemas rara vez piden calcular el índice explícitamente —el valor de la herramienta está en el argumento estructural—, pero conocer el mecanismo computacional permite verificar y construir ejemplos con rapidez.