Considérez les entiers modulo q
où q
est premier, un générateur est n'importe quel entier de 1 < x < q
sorte qu'il x^1, x^2, ..., x^(q-1)
couvre tous q-1
les entiers entre 1
et q-1
. Par exemple, considérons les entiers modulo 7 (que nous écrivons comme Z_7
). Puis 3, 3^2 mod 7 = 2, 3^3 = 27 mod 7 = 6, 3^4 = 81 mod 7 = 4, 3^5 = 243 mod 7 = 5, 3^6 = 729 mod 7 = 1
couvre toutes les valeurs 3, 2, 6, 4, 5, 1
couvre tous les entiers 1..6
comme requis.
La tâche consiste à écrire du code qui prend une entrée n
et génère un générateur pour Z_n
. Bien entendu, vous ne pouvez pas utiliser de bibliothèque ou de bibliothèque intégrée qui le fasse pour vous.
La seule restriction sur les performances de votre code est que vous devez l'avoir testé jusqu'à son terme n = 4257452468389
.
Notez que cela 2^n
signifie 2
la puissance de n
. Cela ^
représente l'exponentiation.
1 < x < q
rend le défi beaucoup plus facile imo.