Generatore (teoria dei numeri)

Da Wikipedia, l'enciclopedia libera.

In matematica, in particolare in aritmetica modulare, un generatore modulo n o radice primitiva modulo n o semplicemente generatore se è chiaro il contesto, è un intero g le cui potenze modulo n sono congruenti con i numeri coprimi ad n.

I generatori modulo n rivestono un'importanza considerevole in crittografia.

Se n\ge 1 è un intero, i numeri coprimi ad n, considerati modulo n, costituiscono un gruppo rispetto all'operazione di moltiplicazione; esso viene generalmente indicato con (\Z/n\Z)^* oppure \Z_n^*. Esso è un gruppo ciclico se e solo se n è uguale a 2, 4, p^k o 2p^k per un numero primo dispari p e k\ge 1. Un generatore di questo gruppo ciclico è chiamato anche elemento primitivo di \Z_n^*.

Si consideri per esempio n=14. Gli elementi di

(\Z/14\Z)^*,

sono le classi di congruenza di 1, 3, 5, 9, 11 e 13.

Si ha che 3 è un generatore modulo 14, perché 32 = 9, 33 = 13, 34 = 11, 35 = 5 e 36 = 1 (modulo 14). L'unica altra radice primitiva modulo 14 è 5.

Trovare i generatori[modifica | modifica wikitesto]

Di seguito vi è una tabella che contiene i più piccoli generatori per diversi valori di n[1]:

n 2 3 4 5 6 7 8 9 10 11 12 13 14
generatore mod n 1 2 3 2 5 3 - 2 3 2 - 2 3

Non è nota nessuna formula generale ragionevolmente semplice per determinare i generatori modulo n. Vi sono però dei metodi per individuare un generatore che sono più veloci della semplice verifica per tentativi di tutti i candidati. Se l'ordine moltiplicativo di un numero m modulo n è uguale all'ordine di (\Z/n\Z)^*, cioè a \phi(n), dove \phi è la funzione phi di Eulero, allora m è un generatore. Si può utilizzare il seguente test per i generatori: calcolare \phi(n). Quindi determinare i diversi fattori primi di \phi(n), siano p_1,\ldots,p_k. Ora, per ogni elemento m di (\Z/n\Z)^*, calcolare

m^{\phi(n)/p_i}\mod n \qquad\text{ per } i=1,\ldots,k

usando il rapido algoritmo di esponenziazione mediante elevamento al quadrato. Non appena si trova un numero m per il quale questi k risultati sono tutti diversi da 1, allora m è un generatore.

Il numero di generatori modulo n, se ne esistono, è uguale a \phi(\phi(n)) dal momento che, in generale, un gruppo ciclico di r elementi possiede \phi(r) generatori.

A volte si può essere interessati ai generatori piccoli. Al riguardo sono stati dimostrati i seguenti risultati:

  • per ogni \varepsilon>0 esistono delle costanti positive C e p_0 tali che, per ogni primo p\ge p_0, esiste un generatore modulo p minore di Cp^{1/4+\varepsilon};

Dimostrazione dell'esistenza di un generatore modulo pk, p dispari[modifica | modifica wikitesto]

La dimostrazione dell'esistenza del generatore procede dapprima provando che essa esiste per ogni numero primo p, poi dimostrando che, se a è una radice primitiva di p, allora o a o p+a è una radice primitiva di p^2, e che questa è poi radice primitiva anche di ogni potenza successiva di p. Infatti, sia a una radice primitiva modulo p. Allora, per definizione di radice primitiva

a^{p-1}\equiv 1\mod p,

e p-1 è il più piccolo esponente per cui ciò avviene. Poiché \phi(p^2)=p(p-1), l'ordine moltiplicativo di a modulo p^2 divide p(p-1), ed è multiplo di p-1, e quindi può essere solamente p-1 o lo stesso p(p-1). In quest'ultimo caso a è una radice primitiva modulo p^2; altrimenti, sviluppiamo con la formula del binomio di Newton

(p+a)^{p-1}=p^{p-1}+\cdots+\binom{p-1}{p-2}pa^{p-2}+a^{p-1}\equiv (p-1)pa^{p-2}+a^{p-1}\mod p^2\equiv 1-pa^{p-2}\mod p^2,

che non può essere 1, perché altrimenti p dividerebbe a^{p-2}, il che è assurdo, e quindi l'ordine di p+a non è p-1, e deve essere p(p-1), cioè abbiamo trovato una radice primitiva modulo p^2.

Per dimostrare la proposizione per p^k, con k>2, si procede per induzione: supponiamo che a sia una radice primitiva per tutti i p^j con j<k. In particolare

a^{\phi(p^{k-2})}\equiv 1 \mod p^{k-2},

ovvero

a^{\phi(p^{k-2})}=1+lp^{k-2},

per un qualche l. Questa relazione vale anche modulo p^k; inoltre l'ordine di a modulo p^k deve essere un multiplo di \phi(p^{k-1}), perché ha quest'ordine modulo p^{k-1}. Quindi, poiché \phi(p^k)=p\phi(p^{k-1}), l'ordine può essere solo \phi(p^{k-1}) o p\phi(p^{k-1}); in particolare, a è una radice primitiva se il suo ordine è il secondo di questi valori. Se p è un primo dispari

a^{\phi(p^{k-1})}=(a^{\phi(p^{k-2})})^p=(1+lp^{k-2})^p\equiv 1+\binom{p}{p-1}lp^{k-2}\mod p^k\equiv 1+lp^{k-1}\mod p^k.

Questa quantità è uguale a 1 se e solo se l è divisibile per p; tuttavia, se lo fosse, si avrebbe

a^{\phi(p^{k-2})}=1+lp^{k-2}\equiv 1\mod p^{k-1}

contro l'ipotesi che l'ordine di a modulo p^{k-1} sia \phi(p^{k-1}). Questo è assurdo, e quindi l'ordine di a modulo p^k è esattamente \phi(p^k), e a è una radice primitiva modulo p^k. Per induzione questo è valido per ogni k.

L'estensione ai numeri nella forma 2p^k segue immediatamente, perché il gruppo moltiplicativo di questo anello contiene lo stesso numero di elementi di quello dell'anello di p^k elementi, ed esiste una corrispondenza biunivoca che conserva le operazioni (ossia un isomorfismo) tra questi due gruppi.

Funzioni simmetriche delle radici primitive modulo p[modifica | modifica wikitesto]

Indicando con g il generatore di \Z_p^* allora, per quanto precedentemente esposto, tutte le radici primitive modulo p si potranno esprimere come g^i dove (i,\phi(p))=(i,p-1)=1 .

Gauss nelle Disquisitiones Arithmeticae dimostrò agli articoli 80 ed 81 il valore (modulo p primo) della somma delle radici primitive di \Z_p e del loro prodotto.

Esse valgono:

  • \prod_{(i,p-1)=1} g^i \equiv 1 \pmod{p} dove p primo diverso da 3.(Art.80, DA)
  • \sum_{(i,p-1)=1} g^i \equiv \mu(p-1) \pmod{p} per qualsiasi p primo, \mu è la funzione di Möbius. Ovviamente Gauss descrisse la funzione di Möbius, che non era stata ancora formalizzata al suo tempo, in maniera equivalente. (Art.81, DA)

La seconda identità si può estendere considerando tutti gli elementi di ordine d, con d divisore di p-1. Sia h un elemento di \Z_p ^* di ordine d, allora tutti gli elementi di ordine d saranno del tipo h^j con (j,d)=1 e quindi saranno in numero \phi(d). La loro somma vale

\sum_{(j,d)=1} h^j \equiv \mu(d) \pmod{p}.

Tramite tale formula possiamo calcolare la somma delle potenze k-esime delle radici primitive. Supponiamo che k sia tale che (k,p-1)=1 allora tale elevamento a potenza k manda l'insieme delle radici primitive in sé stesso e pertanto

\sum_{(i,p-1)=1} (g^i)^k \equiv \mu(p-1) \pmod{p}.

Ora consideriamo un k che divida interamente p-1, se g è radice primitiva (e quindi ha ordine p-1), l'elemento g^k avrà ordine uguale a \tfrac{p-1}{k} quindi l'insieme delle radici primitive (ossia l'insieme degli elementi di ordine p-1) viene mandato nell'insieme degli elementi di ordine \tfrac{p-1}{k} che ha cardinalità \phi(\tfrac{p-1}{k}). Tale funzione è iniettiva se e solo se k=1 mentre negli altri casi si assiste ad una "restrizione" delle radici primitive, nel senso che \tfrac{\phi(p-1)}{\phi\left(\tfrac{p-1}{k}\right)} radici primitive vengono mandate nello stesso elemento di ordine \tfrac{p-1}{k}. Tale funzione è suriettiva, detto ciò per calcolare

\sum_{(i,p-1)=1} (g^i)^k,

basta calcolare la sommatoria degli elementi di ordine \tfrac{p-1}{k} e moltiplicare tale valore per l'"indice di restrizione" \tfrac{\phi(p-1)}{\phi\left(\tfrac{p-1}{k}\right)}. Quindi

\sum_{(i,p-1)=1} (g^i)^k=\tfrac{\phi(p-1)}{\phi\left(\tfrac{p-1}{k}\right)}\mu(\tfrac{p-1}{k}).

Sia ora k dove (k,p-1)=b, quindi k=ab e (a,p-1)=1 pertanto al posto di applicare direttamente la potenza k alle radici primitive, prima applichiamo la potenza a e poi,agli elementi ottenuti, la potenza b. La potenza a manda le radici primitive in sé stesse, la potenza b le fa "restringere" in un sottoordine e pertanto, indicando (k,p-1) in luogo di b otteniamo:

\sum_{(i,p-1)=1} (g^i)^k=\tfrac{\phi(p-1)}{\phi\left(\tfrac{p-1}{(k,p-1)}\right)}\mu(\tfrac{p-1}{(k,p-1)}).

Tali formule si rivelano utili per calcolare le varie funzioni simmetriche delle radici primitive, tramite i teoremi newtoniani riusciamo facilmente nell'impresa. Supponiamo di voler calcolare il valore della sommatoria del prodotto delle radici primitive prese due a due, allora tramite i teoremi newtoniani otteniamo che:

\sum_{(ij,p-1)=1;i \ne j} g^ig^j \equiv \tfrac{1}{2}[(\sum_{(i,p-1)=1} g^i )^2-\sum_{(i,p-1)=1} (g^i)^2]\equiv \tfrac{1}{2}[(\mu(p-1))^2-\mu(\tfrac{p-1}{2})\tfrac{\phi(p-1)}{\phi\left(\tfrac{p-1}{2}\right)}] \pmod{p}.

Considerando ora il polinomio monico delle radici primitive modulo p (primo e diverso da 3) esso sarà di grado \phi(\phi(p))=\phi (p-1):

x^{\phi(p-1)} +A_{n-1} x^{\phi(p-1)-1}+\ldots+A_1 x+A_0\equiv\prod_{(i,p-1)=1} (x-g^i) \pmod{p}.

Si dimostra che valgono le relazioni A_i =A_{\phi(p-1)-i}. Infatti se y è una radice primitiva allora anche y^{-1} lo è, e tali radici sono distinte per p diverso da 3. Valutando i polinomi in queste radici otteniamo:

(1) y^{\phi(p-1)} +A_{n-1} y^{\phi(p-1)-1}+\ldots+A_1 y+A_0\equiv 0 \pmod{p}

(2) ({\tfrac{1}{y}})^{\phi(p-1)} +A_{n-1} ({\tfrac{1}{y}})^{\phi(p-1)-1}+\ldots+A_1 ({\tfrac{1}{y}})+A_0\equiv 0 \pmod{p}

moltiplicando la (2) per ({\tfrac{1}{y}})^{\phi(p-1)} otteniamo:

(2) A_0 y^{\phi(p-1)} +A_1 y^{\phi(p-1)-1}+\ldots+A_{n-1} y+1\equiv 0 \pmod{p} Sottraendo la (1) alla (2') otteniamo:

(3) (A_0 -1) y^{\phi(p-1)} +(A_1 -A_{n-1}) y^{\phi(p-1)-1}+\ldots+(A_{n-1}- A_1) y+(1- A_0)\equiv 0 \pmod{p}

In particolare il termine A_0 vale (-1)^{\phi(p-1)}\prod_{(i,p-1)=1} g^i dove p diverso da tre, pertanto per qualsiasi p primo e maggiore di 3 si ha che \phi(p-1) è pari e quindi A_0 \equiv 1 \pmod{p}. Sostituendo tale valore nella (3) otteniamo che l'equazione ha, quindi, grado \phi(p-1)-1 e della quale due radici sono y e y^{-1}; considerando le altre radici primitive a due a due, l'una l'inverso dell'altra, otteniamo sempre la stessa equazione (3) e quindi, in sintesi, la (3) si annulla per tutte le \phi(p-1) radici primitive ed ha grado \phi(p-1)-1. Ma allora è identicamente nulla e quindi A_i =A_{\phi(p-1)-i}.

Allora in base alle considerazioni precedenti sappiamo:

x^{\phi(p-1)} -\mu(p-1)x^{\phi(p-1)-1}+\ldots-\mu(p-1)x+1\equiv\prod_{(i,p-1)=1} (x-g^i) \pmod{p}.

Riportiamo alcuni esempi di tali polinomi:

  • x+1 \equiv 0 \pmod{3} (per questo non si può impiegare l'Art.80 di Gauss, ma si è solo verificato "a mano")
  • x^2+1 \equiv 0 \pmod{5}
  • x^2-x+1 \equiv 0 \pmod{7}
  • x^4 -x^3+x^2-x+1 \equiv 0 \pmod{11}
  • x^4-x^2+1 \equiv 0 \pmod{13}
  • x^8 +1 \equiv0 \pmod{17}
  • x^6 -x^3+1\equiv0 \pmod{19}
  • x^{10} -x^9 +x^8 -x^7 +x^6 -x^5 +x^4 -x^3 +x^2 -x+1 \equiv 0 \pmod{23}
  • x^{12}-x^{10}+x^8-x^6+x^4-x^2+1 \equiv 0 \pmod{29}
  • x^8+x^7-x^5-x^4-x^3+x+1 \equiv0 \pmod{31}

Laddove nel polinomio si assiste ad un "passo" costante tra gli esponenti di x (per esempio per p=5 il passo degli esponenti è 2, come succede anche per p=13,29) e nominando k il valore di tale "passo", allora in tali moduli l'insieme delle radici primitive è quozientabile tramite il gruppo delle radici k-esime dell'unità, e vale il viceversa.

In particolare se p è un numero primo di Fermat allora il polinomio delle sue radici primitive sarà:

x^{\tfrac{p-1}{2}}+1 \equiv0 \pmod{p}.

Infatti se p è un primo di Fermat esso è del tipo p=2^{2^{n}}+1 ed il numero delle radici primitive sarà

\phi(\phi(p))=\phi(p-1)=\phi(2^{2^{n}})=2^{2^{n}-1},

tale sarà anche il grado del polinomio delle radici primitive. Per il piccolo teorema di Fermat l'equazione che ha per radici tutti degli elementi di \Z_p ^* è

x^{p-1}-1\equiv(x^{\tfrac{p-1}{2}}-1)(x^{\tfrac{p-1}{2}}+1) \equiv 0 \pmod{p},

dove il primo polinomio si annulla solo e solamente per i residui quadratici modulo p. Criterio di Eulero. Poiché le radici primitive non sono residui quadratici, il polinomio delle radici primitive deve fattorizzare il secondo polinomio. Quest'ultimo è monico e di grado \tfrac{p-1}{2}=2^{2^{n}-1}, cioè ha lo stesso grado del polinomo cercato: pertanto lo è.

Se p è un numero primo sicuro maggiore di 5, ossia se p=2q+1 dove q è un primo di Sophie Germain maggiore di 2, il polinomio delle radici primitive ha coefficienti di valori alternativamente +1 e -1. Infatti in tal caso si ha che la cardinalità di \Z_p^* è 2q e pertanto gli elementi di \Z_p^* possono avere ordine solo di 2q,q,2,1. Per l'ordine 1 abbiamo solo l'elemento +1, mentre per l'ordine 2 abbiamo solo l'elemento -1. Gli elementi di ordine 2q sono equinumerosi agli elementi di ordine q, infatti \phi(2q)=\phi(q)=q-1. Sia h un elemento di ordine q allora, poiché q è coprimo con 2, l'elemento -h ha ordine pari al minimo comune multiplo tra l'ordine di -1 (che è 2) e quello di h (che è q). In sintesi per ogni elemento h di ordine q abbiamo che l'elemento -h ha ordine 2q.

Sia il polinomio delle radici di ordine q il seguente:

p_q(x)=x^{q-1}+M_{q-2}x^{q-2}\ldots+M_2x^2+M_1x+M_0,

ma allora il polinomio delle radici di ordine 2q (radici primitive) sarà:

p_{2q}(x)=x^{q-1}-M_{q-2}x^{q-2}\ldots+M_2x^2-M_1x+M_0,

in quanto ogni coefficiente di p_{2q}(x) è somma di prodotti di s radici opposte a quelle di p_q(x), quindi il segno dipende dalla parità di s .

Per quanto appena affermato, proponiamoci di determinare il polinomio delle radici di ordine q al fine di determinare quello di ordine 2q. Sia h un elemento di ordine q allora tutti gli altri elementi di pari ordine si esprimeranno come h^i con (i,q)=1 e q, ricordiamo, è numero primo maggiore di 2. Esse saranno pertanto h^1,h^2,h^3,\ldots,h^{q-1} e se ad esse aggiungiamo l'elemento 1 allora sappiamo che esse sono le radici dell'equazione

x^q -1 \equiv 0 \pmod{p},

che sappiamo fattorizzare in:

x^q -1 \equiv (x-1)(x^{q-1}+x^{q-2}+\ldots+x^2+x+1) \pmod{p},

è immediato rilevare che

p_q(x) \equiv x^{q-1}+x^{q-2}+\ldots+x^2+x+1 \pmod{p},

e per quanto detto prima otteniamo:

p_{2q}(x) \equiv x^{q-1}-x^{q-2}+\ldots+x^2-x+1 \pmod{p},

che è il polinomio delle radici primitive.

Note[modifica | modifica wikitesto]

  1. ^ (EN) Sequenza A046145 in On-Line Encyclopedia of Integer Sequences, The OEIS Foundation.

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

matematica Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica