Teoria dei numeri - Matematica e Informatica

Teoria dei numeri
Lezione del giorno 29 aprile 2008
Esempio: Un numero di Carmichael molto grande è n=225.593.397.919 (si dimostra che è di
Carmichael con il Teorema di Korselt che vedremo in seguito): la sua decomposizione in fattori
primi è 2207661915443 . Per tale n la probabilità che n superi il test di Fermat è circa:
(1-1/2207)(1-1/6619)(1-1/15443)  0,99933 (molto vicina al 100%).
Empiricamente si è verificato che i numeri di Carmichael sono abbastanza “rari”: quelli < 25109
sono “soltanto” in numero di 2.163.
D’altra parte è stato dimostrato (1992) che i numeri di Carmichael sono infiniti.
La possibilità di imbattersi in un numero di Carmichael rende il test di Fermat non molto affidabile,
ma si è osservato che nessun naturale composto x3,41014 è pseudoprimo contemporaneamente in
tutte le seguenti basi: 2,3,5,7,11,13,17 (i primi 7 numeri primi); dunque si può trasformare il test di
Fermat in un test di primalità deterministico (valido solo per un input 3,41014) eliminando la
scelta casuale della base a, e ripetendo il test esattamente 7 volte, una per ognuna delle basi
elencate.
Il matematico Korselt ha caratterizzato i numeri di Carmichael:
Teorema di Korselt.
Un numero naturale composto n è un numero di Carmichael  n è prodotto di primi distinti, e ogni
fattore primo pi soddisfa la condizione (pi-1)(n-1) .
Dimostrazione.
() Per ipotesi n=p1p2….pr , con pi primi distinti tali che (pi-1)(n-1).
Sia a intero tale che 1an-1, mcd(a,n)=1, e dimostriamo che an-1modn=1 ossia che an-11 (mod n).
Essendo a,n coprimi, nessun pi è divisore di a, quindi, per il Piccolo Teorema di Fermat, a p i 1 1
(mod pi), e se n-1=k(pi-1) si ha an-1= a k(p i 1) 1k=1 (mod pi ), per ogni i.
Ogni pi è divisore di an-1-1, e poiché i pi (primi distinti) sono a 2 a 2 coprimi, il loro prodotto n è
divisore di an-1-1 e si ha la tesi.
() Dimostreremo questa implicazione dopo lo sviluppo della teoria delle radici primitive modulo
n.
Il più piccolo numero di Carmichael è n=561 la cui decomposizione in fattori primi è 31117 (e
infatti 2, 20, 16 sono divisori di n-1=560).
Un esempio di numero di Carmichael molto grande già incontrato è n=225.593.397.919 la cui
decomposizione in fattori primi è 2207661915443 (si verifica facilmente che 2207, 6619, 15443
sono primi e che 2207-1, 6619-1, 15443-1 sono divisori di n-1).
Possiamo notare che un numero di Carmichael n è prodotto di almeno 3 fattori primi distinti: se per
assurdo fosse n=pq, con p,q primi distinti, per esempio con p<q, per il Teorema di Konselt si
avrebbe (q-1)(n-1), da cui n-1=pq-1=(q-1)t, con t naturale, (p-1)=(q-1)(t-p), p-1q-1, pq,
contraddizione.
Osservazioni sulla probabilità nei test di primalità
Un test di primalità probabilistico fornisce a priori una maggiorazione per la probabilità che un
input composto n superi il test per k volte (con k fissato): per esempio nel test di Fermat la
probabilità è 1/2k (tranne nel caso di un numero di Carmichael). In generale in un test
probabilistico la probabilità che un input composto n superi il test per k volte (con k fissato) è 1/Ck
con C costante opportuna.
La vera questione è però quella inversa: se l’input n ha superato k volte il test, cosa possiamo dire
della probabilità che sia composto ?
Nel linguaggio del calcolo della probabilità: dati 2 eventi A, B, indichiamo con p(A/B) la
probabilità “condizionale” che si verifichi l’evento A, sotto la condizione che si sia verificato
l’evento B; se A=”l’input è composto”, B=”l’input ha superato k volte il test”, ed è nota una
maggiorazione per p(B/A), cosa possiamo dire su p(A/B) ?
Possiamo utilizzare il Teorema di Bayes:
p(A/B) = p(B/A)p(A)/p(B)
(dove p(A), p(B) sono le probabilità degli eventi A,B)
Supponiamo di avere scelto casualmente un input n di t cifre (in base 10), e supponiamo che tale
input n abbia superato il test per k volte. Poniamo p=p(A), q=p(B/A) (con q1/Ck, C costante).
Possiamo approssimare p mediante la funzione x/log(x): sappiamo che la probabilità che un numero
di t cifre sia primo è  1/2,3t, dunque p  1-(1/2,3t).
Cosa possiamo dire su p(B) ? La probabilità che un numero di t cifre superi k volte il test è la
somma della probabilità che esso sia primo (e superi k volte il test) e della probabilità che esso sia
composto (e superi k volte il test). Ma la probabilità che esso sia primo (e superi k volte il test)
coincide con la la probabilità che esso sia primo (perché tutti i primi superano il test), dunque tale
probabilità è (1-p)  1/(2,3t); invece la probabilità che esso sia composto (e superi k volte il test) è il
prodotto delle probabilità qp (probabilità che sia composto moltiplicata per la probabilità che,
essendo composto, superi k volte il test).
In totale si ha:
qp
p(A/B) =
.
(1  p)  qp
Si ha allora, tenendo conto che q1/Ck:
p
p(A/B) 
(1 - p)C k
p
Si ha (
)  2,3t-1  2,3t (per t grande). Dunque approssimativamente:
1- p
p(A/B)  (2,3t)/Ck .
Nei casi concreti il numero k di ripetizioni del test è tale da rendere 2k di ordine di grandezza molto
superiore a 2,3t (dove t è il numero di cifre dell’input n), e quindi la probabilità che un numero, che
abbia superato k volte il test, sia composto, é maggiorata da una quantità non molto maggiore di
1/Ck, ma nel caso di un valore di k non molto grande, la maggiorazione si può discostare molto dal
valore 1/Ck.
Per esempio per un input di t=100 cifre (in base 10), e per un numero k=10 di ripetizioni del test, e
per C=2 si ha 1/C10=1/1024, ma (2,3t)/C10  1/4 .
Invece per k=100 si ha 1/Ck1/1030 , (2,3t)/Ck 1/1028 (valore di ordine di grandezza simile).
Radici primitive modulo n
Un sottogruppo di un gruppo G (in notazione moltiplicativa) è un sottoinsieme non vuoto H di G,
che sia chiuso rispetto all’operazione di G (quindi se a,bH allora abH) e che sia gruppo rispetto
alla stessa operazione di G.
Una condizione necessaria e sufficiente affinché un sottoinsieme non vuoto H del gruppo G sia
sottogruppo di G è la seguente: dati comunque x,yH si ha xy-1H.
Infatti è ovvio che se H è sottogruppo la condizione è soddisfatta; viceversa se la condizione è
soddisfatta allora, fissato un elemento qualunque aH si ha aa-1=1GH, inoltre 1Ga-1=a-1H, e dati
comunque a,bH si ha a(b-1)-1=abH, quindi H è sottogruppo di G (la proprietà associativa è
ovviamente valida in H perché lo è in G).
Se la notazione è additiva, la condizione per H diventa: dati comunque x,yH si ha x+(-y)H
(scriveremo anche x-y invece di x+(-y) ).
Torniamo al caso di un gruppo commutativo finito G di cardinalità n, e di un elemento aG di
periodo k. L’insieme delle potenze di base a ad esponente intero 0 (che indicheremo con il
simbolo <a>) è formato dalle n potenze distinte:
<a> = {a0=1G, a1=a, a2,……, ak-1}
Tale sottoinsieme di G è un sottogruppo di G: infatti, dato un elemento x=aj<a>, il suo inverso è
x-1=ak-j con k-j0 (perché ajak-j=ak=1G), dunque dati x=ai, y=aj <a>, si ha xy-1=ai+k-j<a>.
Tale sottogruppo <a> è detto sottogruppo ciclico generato da a: esso ha dunque cardinalità uguale
al periodo dell’elemento a.
Se il gruppo G coincide con <a> per qualche aG, si dice che G è gruppo ciclico generato da a e
l’elemento a è detto generatore di G: in questo caso ogni elemento di G sarà una potenza di base a
ad esponente intero 0 e k-1 (dove k è il periodo di a), e la cardinalità di G coinciderà con il
periodo k del generatore a.
Per verificare se un gruppo G commutativo finito di cardinalità n è ciclico basta verificare
l’esistenza di almeno un elemento aG di periodo uguale ad n: se un tale a esiste, il sottogruppo
<a> ha cardinalità n, dunque necessariamente coincide con G.
Esempio:
Per ogni n>1, nel gruppo additivo Zn l’elemento a=[1] ha ovviamente periodo n (il minimo intero
positivo k tale che k[1]=[k]=[0] è k=n). Quindi per ogni n>1 il gruppo additivo Zn è gruppo ciclico
con generatore [1].
Nel gruppo moltiplicativo Z5*= {[1], [2], [3], [4] } degli elementi invertibili di Z5, cioè delle classi
di congruenza modulo 5 con rappresentante coprimo con 5, il periodo dell’elemento a=[2] è 4 (in
quanto [2]2=[4], [2]3=[8]=[3], [2]4=[16]=[1]=neutro), dunque coincide con la cardinalità di Z5*. Si
conclude che Z5* è gruppo ciclico con generatore [2].
Nel gruppo moltiplicativo Z8*= {[1], [3], [5], [7]} degli elementi invertibili di Z6, cioè delle classi
di congruenza modulo 6 con rappresentante coprimo con 8, si verifica che nessun elemento ha
periodo uguale alla cardinalità 4 di Z8* (ogni elemento al quadrato dà il neutro), dunque Z8* non è
gruppo ciclico.
Vedremo in seguito (Teorema di Gauss) per quali valori di n il gruppo moltiplicativo Zn* è ciclico.
Se il gruppo moltiplicativo Zn* è ciclico per un certo valore di n, chiameremo radice primitiva
modulo n ogni intero a tale che 1an-1, a,n sono coprimi e [a] Zn* è un generatore del gruppo
ciclico Zn* (quindi le radici primitive modulo n sono in numero uguale a quello dei generatori di
Zn*). Per esempio, come visto sopra, 2 è una radice primitiva modulo 5, ma non esistono radici
primitive modulo 6.
Calcoliamo il numero dei generatori di un gruppo ciclico finito:
Lemma.
Sia a un elemento di periodo n>1 nel gruppo moltiplicativo G (dunque le potenze distinte di a sono
a0,a1,…,an-1). Allora fra le potenze distinte di a: {a0,a1,…,an-1} quelle di periodo n sono tutte e sole
le potenze ai con 1in-1 ed i,n coprimi, e in particolare sono in numero di (n) .
Dimostrazione:
Notiamo che a0=1G ha periodo 1n, dunque le potenze di periodo n sono da ricercare fra le potenze
ai con 1in-1.
Se ai ha periodo n, poniamo d=mcd(i,n): ovviamente i/d, n/d sono numeri naturali.
Si ottiene:
(ai)n/d = (an)i/d = 1Gi/d = 1G
Per una proprietà del periodo n dell’elemento ai, si ha che l’esponente n/d è multiplo di n, cioè n/d =
nk, con k intero, da cui dk=1, d=1 e si ha la tesi che i,n sono coprimi.
Viceversa supponiamo i,n coprimi. La tesi è che ai ha periodo n. Sia c il periodo di ai : è il minimo
esponente positivo tale che (ai)c = aic =1G .
Per una proprietà del periodo n dell’elemento a, si ha che l’esponente ic è multiplo di n: ma i,n
coprimi ed nic implicano nc, in particolare nc. D’altronde (ai)n=(an)i = 1Gi = 1G , e per una
proprietà del periodo c dell’elemento ai si ha che l’esponente n è multiplo di c, in particolare cn.
In totale n=c=periodo di ai e si ha la tesi.
Teorema.
Sia G un gruppo (moltiplicativo) ciclico finito di cardinalità n>1 e sia aG un generatore di G.
Allora fra gli elementi distinti di G:
a0,a1,…,an.-1
si ha che un generico ai è generatore di G se e solo se 1in-1 ed i,n sono coprimi.
In particolare il numero dei generatori di G è (n) (funzione di Eulero di n).
Dimostrazione:
Basta applicare il Lemma, ricordando che un generatore di G non è altro che un elemento di periodo
n.
Esempio.
Nel gruppo moltiplicativo ciclico Z5*= {[1], [2], [3], [4]} si è visto in un esempio precedente che
a=[2] è un generatore : poiché la cardinalità è 4, tutti e soli i generatori saranno le potenze ai con
1i3 ed i,4 coprimi, cioè le potenze a1=[2], a3=[8]=[3].
Se il gruppo moltiplicativo Zn* è ciclico per un certo valore di n>1, e se [a] è un generatore,
essendo (n) la cardinalità di Zn*, tutti e soli i generatori saranno le potenze [a]i = [ai], dove
1i(n)-1, e i,(n) sono coprimi, ed essi sono in numero di ((n)).
In tale caso, se a è una radice primitiva modulo n, le radici primitive modulo n sono tutte e sole le
riduzioni aimodn, dove 1i(n)-1, e i,(n) sono coprimi, ed esse sono in numero di ((n)).
Gauss trovò tutti e soli i valori n>1 per i quali il gruppo moltiplicativo Zn* è ciclico (e per i quali
dunque esiste qualche radice primitiva modulo n):
Teorema di Gauss.
Dato un naturale n>1:
il gruppo moltiplicativo Zn* è ciclico  n é uno dei seguenti valori: 2, 4, pk (con p primo >2 , k>0),
2pk (con p primo >2 , k>0).
(dimostreremo in seguito solo i casi di p e p2, con p primo).
Anelli, campi e polinomi.
Un anello è insieme non vuoto in cui sono definite 2 operazioni (indicate rispettivamente con
somma e prodotto) tali che:
- A(+) é gruppo commutativo
- A() é un semigruppo (cioè vale la proprietà associativa del prodotto)
- valgono le proprietà distributive: per ogni a,b,cA si ha a(b+c)=ab+ac, (b+c)a=ba+ca
In un anello A vale la seguente proprietà:
per ogni aA, si ha 0Aa=a0A=0A (infatti per esempio 0A+0Aa=0Aa=(0A+0A)a=0Aa+0Aa e basta
usare la legge di cancellazione nel gruppo A(+)).
Un anello A è commutativo se il prodotto soddisfa la proprietà commutativa; è con unità se esiste
l’elemento neutro del prodotto (indicato con 1A).
Sono esempi di anelli commutativi con unità: l’anello degli interi relativi, l’anello dei numeri
razionali relativi, l’anello dei numeri reali relativi.
Anche l’insieme Zn rispetto alla somma e prodotto di classi di congruenza è un anello commutativo
con unità.
Se A è un anello con unità, rispetto al prodotto è un monoide, dunque si può considerare il gruppo
moltiplicativo A* degli elementi invertibili di A rispetto al prodotto.
Un anello commutativo con unità A è un campo se ogni elemento aA, a0A ha inverso in A
rispetto al prodotto. In tale caso il gruppo A* è un gruppo commutativo coincidente con A-{0A} .
Sono esempi di campi: il campo razionale e il campo reale. L’anello degli interi relativi non è un
campo, perché gli unici elementi invertibili sono 1, -1.
Teorema.
In un campo A vale la legge di annullamento del prodotto: comunque dati a,bA, se ab=0A si ha
a=0A oppure b=0A (equivalentemente se a,b0A allora ab0A).
Dimostrazione:
Sia per assurdo ab=0A con a,b0A. Per ipotesi esiste a-1A, da cui b=1Ab=(a-1a)b=a-1(ab)=a-10A=0A,
contraddizione.
Teorema.
Dato un intero n>1:
l’anello Zn è campo  n è primo
Dimostrazione:
Ricordiamo che in Zn una classe [a][0] ha inverso se e solo se a,n sono coprimi.
() Se per assurdo n non fosse primo, esisterebbe un divisore non banale d di n con 1<d<n, e la
classe [d][0] non avrebbe inverso (essendo mcd(d,n)=d>1) contro l’ipotesi che Zn è campo
() Le classi [0] in Zn sono [1],[2],..,[n-1] ed essendo n coprimo con 1,2,…,n-1 (perché non sono
multipli di n ed n è primo) tutte queste classi hanno inverso, quindi Zn è campo.
Se A è un anello commutativo con unità, ed x è una indeterminata, si può costruire l’insieme A[x]
dei polinomi a coefficienti in A nell’indeterminata x, formato dalle espressioni algebriche della
forma:
f(x) = a0+a1x+a2x2+….+amxm dove aiA, m intero0.
Il polinomio nullo è quello con tutti i coefficienti =0A. Per un polinomio non nullo f(x) si definisce
il grado gr(f(x)) uguale al massimo indice k tale che il coefficiente ak sia 0A : il coefficiente ak è
allora detto coefficiente principale di f(x).
Fra i polinomi di A[x] si possono definire nel modo usuale una somma e un prodotto di polinomi
(sfruttando le operazioni dell’anello A) che rendono A[x] un anello commutativo con unità, come
A.
Nell’anello dei polinomi A[x] si possono definire i concetti di divisore e multiplo in modo analogo
a quanto fatto per gli interi: dati f(x), g(x)A[x] si dice che f(x) è divisore di g(x) (o che g(x) è
multiplo di f(x)) e si scrive f(x)g(x), se esiste h(x)A[x] tale che f(x)h(x)=g(x).
Dato un polinomio f(x)= a0+a1x+a2x2+….+amxmA[x] ed un elemento aA, si chiama valore
assunto da f(x) in a l’elemento f(a)= a0+a1a+a2a2+….+amamA ottenuto sostituendo x con a.
Se f(a)=0A si dice che a è radice o soluzione di f(x).
E’ facile verificare che, se f(x), g(x)A[x], h(x)=f(x)g(x), dato aA, si ha: h(a)=f(a)g(a).
Teorema di Ruffini.
Dato un polinomio f(x)A[x]:
un elemento aA è radice di f(x)  (x-a)f(x).
Dimostrazione:
() Se esiste h(x)A[x] tale che f(x)=(x-a)h(x), si ha, calcolando il valore in a: f(a)=0Ah(a)=0A
() Per ogni aA ed ogni intero t>0 vale l’identità algebrica:
xt - at = (x-a)(xt-1+axt-2+…..+at-2x+at-1)
e da ciò segue che, se f(x)= a0+a1x+a2x2+….+amxm :
(x-a) é divisore di f(x)-f(a)=a1(x-a)+a2(x2-a2)+…..+am(xm-am).
In particolare, se f(a)=0A, (x-a) è divisore di f(x).