Teoria dei numeri e Crittografia: lezione del 16 maggio 2011
I Teoremi di Euclide ed Eulero dimostrati nell’ultima lezione hanno come conseguenza che, dato un numero naturale pari n, esso è perfetto se e solo se n=2
k-1(2
k-1)=2
k-1M
kdove M
kè un numero di Mersenne primo.
Dunque esiste una biiezione fra numeri perfetti pari e numeri di Mersenne primi: poiché si conoscono a tutt’oggi 46 numeri di Mersenne primi, si conoscono altrettanti numeri perfetti pari.
E’ ancora aperta la congettura: esiste un numero perfetto dispari ? Il test di primalità AKS (cenni).
E’ l’unico test di primalità deterministico di complessità polinomiale che si conosca a tutt’oggi.
E’ stato implementato nel 2002 da tre matematici indiani: Agrawal, Kayal, Saxena.
Osserviamo prima di tutto che:
se n è un numero primo, i coefficienti binomiali
i
n con 1 i n-1 sono tutti multipli di n.
Infatti si ha
i
n = i!(n n! 1 )! dunque i!(n-1)!
i
n = n!, ossia il numero primo n è divisore del
prodotto i!(n-1)!
i
n , e poiché n non è divisore né di i! né di (n-1)! (che sono prodotti di fattori <n,
dunque non multipli di n), si ha che n è divisore di
i n .
Su tale osservazione si basa un test di primalità deterministico che ora esporremo.
Fissiamo un polinomio h(x)Z[x] . Dati due polinomi f(x), g(x)Z[x] diremo che f(x) è congruo g(x) modulo h(x) se h(x)f(x)-g(x) cioè se esiste s(x)Z[x] tale che f(x)-g(x)=s(x)h(x). In tale caso scriveremo f(x) g(x) (mod h(x)).
E’ facile verificare che tale relazione di congruenza fra polinomi è una relazione di equivalenza in Z[x], e che gode di proprietà simili a quelle della congruenza fra interi: essa è per esempio compatibile con somma e prodotto, quindi si possono moltiplicare e sommare congruenze fra polinomi.
Un caso particolare si ha se il polinomio h(x) è un polinomio costante della forma h(x)=n con n>1.
In questo caso è facile verificare che, se a
i,b
isono rispettivamente i coefficienti (dello stesso grado) di f(x), g(x) si ha f(x) g(x) (mod n) se e solo se a
i b
i(mod n) per ogni i, dunque la congruenza fra polinomi si riconduce in questo caso alle congruenze aritmetiche fra le coppie di coefficienti numerici dei polinomi.
Teorema.
Dato un numero naturale n>1, ed un qualunque naturale a coprimo con n , si ha:
n è primo (x+a)
n x
n+a (mod n).
Dimostrazione.
() Sia n primo. Sviluppando con la regola di Newton si ha : (x+a)
n=
i n-in i
x i a
n
0
Confrontando i coefficienti dei polinomi (x+a)
n, x
n+a (che hanno entrambi il coefficiente principale
=1) la tesi è che sia:
i
n a
i 0 (mod n) per i=1,2,…,n-1; a
n a (mod n).
La prima proprietà deriva dall’osservazione fatta sopra :
i
n è multiplo di n per i=1,2,…,n-1.
Il fatto che a
n a (mod n) deriva dal piccolo teorema di Fermat a
n-1 1 (mod n), moltiplicando ambo i membri per a.
() Per ipotesi sia (x+a)
n x
n+a (mod n), ossia:
i
n a
i 0 (mod n) per i=1,2,…,n-1; a
n a (mod n).
Supponiamo per assurdo che n non sia primo, e sia q un divisore primo di n, con 1<q<n; sia poi q
kla massima potenza di q che divide n (con k>0).
Consideriamo il coefficiente binomiale
q
n = n(n- 1 )...(n-q q! 1 ) ; si ha:
q!
q
n = n(n-1)…..(n-q+1).
L’ipotesi
q
n a
q 0 (mod n) implica che q
kè divisore del prodotto
q
n a
q, ma q non divide a
q(perché q non divide a, essendo a,n coprimi): dunque, per la fattorizzazione unica, q
kè divisore di
q n .
Essendo qq!, q
kn si ha che q
k+1è divisore di q!
q
n = n(n-1)…..(n-q+1), dunque (essendo q
kla massima potenza di q che è divisore di n) per la fattorizzazione unica q é divisore di uno dei fattori (n-i) con 1 i q-1, contraddizione perché, essendo qn, si avrebbe qi con 1 i q-1.
Nota: come si vede nella dimostrazione, nell’implicazione () si può omettere l’ipotesi che a,n siano coprimi, poiché la congruenza a
n a (mod n) è valida anche se a,n non sono coprimi (cioè se il primo n è divisore di a), in quanto ovviamente n sarà in questo caso anche divisore della differenza a
n-a .
In base all’ultimo teorema si può allora implementare il seguente test di primalità, con input n >1:
1) si fissa a piacere un intero a, con 1 a n-1
2) se mcd(a,n)=d >1 allora si esce con output “n è composto”
3) se invece a,n sono coprimi: se (x+a)
n x
n+a (mod n) si esce con output “n è primo”, altrimenti si esce con output “n è composto”
Dimostriamo che tale test è deterministico. Se l’input n è primo, nel passo 2) a,n sono coprimi (le essendo a<n) e nel passo 3) si esce con output “n è primo” per il Teorema precedente. Viceversa, se nell’algoritmo si esce con output “n è primo”, nel passo 2) si deve avere a,n coprimi, dunque nel passo 3) (visto l’output) la congruenza fra polinomi è verificata, ed n è primo per il Teorema precedente.
Esaminiamo la complessità di calcolo dell’algoritmo. Sia x=L(n) la lunghezza binaria di n . Nel passo 2) si usa l’algoritmo euclideo delle divisioni successive, di complessità polinomiale.
Nel passo 3) si deve verificare la congruenza polinomiale (x+a)
n x
n+a (mod n), la quale comporta
la verifica delle congruenze dei singoli coefficienti dei 2 polinomi (x+a)
n, x
n+a : essi sono
polinomi di grado n, e (a parte il coefficiente di grado massimo che è =1 in entrambi) si tratta di
verificare n congruenze numeriche, ognuna di complessità non superiore al polinomiale rispetto a
x=L(m). Ma il numero di tali congruenze è n, quindi di ordine esponenziale O(2
x), perciò
l’algoritmo non è “efficiente”.
L’idea di Agrawal, Kayal, Saxena per rendere “efficiente” il precedente test di primalità fu quella di
“diminuire” in qualche modo il grado dei polinomi (x+a)
n, x
n+a , rendendo tale grado <r con un opportuno r ≤ x
k(per un naturale opportuno k): in tal modo verificare la congruenza polinomiale del passo 3) equivale a verificare un numero di congruenze di ordine non superiore al polinomiale rispetto a x=L(m).
Tornando alle congruenze polinomiali, un altro caso particolare della congruenza modulo h(x) si ha se h(x)=x
r-1, con r>0.
In tale caso se x
kè una qualunque potenza di x ad esponente intero k 0, e se dividiamo k per r con quoziente q e resto t, si ottiene k=rq+t, con 0 t < r, da cui x
k-x
t=x
rqx
t-x
t=x
t(x
rq-1), e tenendo conto che x
r-1x
rq-1 (per le solite identità considerate più volte) si conclude che x
k x
t(mod x
r-1).
Dunque, per la compatibilità della congruenza con somma e prodotto, dato un polinomio qualunque f(x)=a
0+a
1x
+…..+a
nx
na coefficienti interi relativi, si ha
f(x)
n i
t i
x
ia
1
(mod x
r-1)
dove ogni t
ié il resto della divisione dell’esponente i per r, cioè ogni t
i=imodr, la riduzione di i modulo r : si devono poi sommare nel secondo membro i monomi simili, ossia quelli per cui i resti t
isono uguali.
Il polinomio h(x)=
n i
t i
x
ia
1
è di grado <r, ed è l’unico polinomio di grado <r tale che f(x) h(x) (mod x
r-1),: infatti se si ha f(x) k(x) (mod x
r-1), con k(x) di grado <r, allora h(x) k(x) (mod x
r-1), dunque h(x)-k(x) è multiplo di x
r-1, ed h(x)-k(x) è il polinomio nullo (altrimenti sarebbe di grado <r e multiplo di x
r-1, contraddizione), dunque h(x)=k(x).
Questo unico polinomio h(x) di grado <r tale che h(x) f(x) (mod x
r-1) è detto riduzione di f(x) modulo x
r-1, ed è indicato con f(x)mod(x
r-1): come visto esso si ottiene da f(x) riducendo modulo r tutti gli esponenti dell’indeterminata x e sommando i monomi simili: in pratica se f(x)=a
0+a
1x
+…..+
a
nx
nsi ha f(x)mod(x
r-1)=c
0+c
1x
+…..+c
nx
ndove c
i=
i(mod r)
j