Tengo esta forma de probar primos mayores que 2.
Divido 2n−1−1 por n. Si el resto es 0, n es primo.
Esto funciona porque en GF(p), si uno multiplica todos los elementos distintos de cero en el campo por el mismo número distinto de cero (digamos 2), todos los números simplemente se reordenan.
Así, si se multiplican los productos entre sí, el producto es el mismo que si no se hubiera multiplicado por el elemento de campo elegido. Entonces, 2p−1 es congruente a 1 módulo p.
De lo que no estoy seguro es del "sólo si". Si p es primo 2p−1−1 es congruente a 0 módulo p. Sin embargo, esto no significa que si 2p−1−1 es congruente a 0 módulo p, p es primo.
¿Puedes ayudarme a demostrar la parte de "sólo si"?
Por cierto, 2n−1−1 es todo 1 en binario.