Considera gli interi in q
cui q
è primo, un generatore è qualsiasi intero in 1 < x < q
modo che x^1, x^2, ..., x^(q-1)
copra tutti q-1
gli interi tra 1
e q-1
. Ad esempio, consideriamo gli interi modulo 7 (che scriviamo come Z_7
). Quindi 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
copre tutti i valori 3, 2, 6, 4, 5, 1
copre tutti gli interi 1..6
come richiesto.
Il compito è scrivere il codice che accetta un input n
e genera un generatore per Z_n
. Ovviamente non puoi usare alcun builtin o libreria che lo faccia per te.
L'unica limitazione all'esecuzione del tuo codice è che devi averlo testato per completarlo n = 4257452468389
.
Nota che 2^n
significa 2
potere di n
. Ciò ^
rappresenta esponenziazione.
1 < x < q
rende la sfida molto più semplice.