• Non ci sono risultati.

Teoria dei numeri e Crittografia: lezione del 6 aprile 2011 Algoritmo Euclideo esteso

N/A
N/A
Protected

Academic year: 2021

Condividi "Teoria dei numeri e Crittografia: lezione del 6 aprile 2011 Algoritmo Euclideo esteso"

Copied!
1
0
0

Testo completo

(1)

Teoria dei numeri e Crittografia: lezione del 6 aprile 2011 Algoritmo Euclideo esteso

Vedremo ora che l’algoritmo Euclideo delle divisioni successive permette (con un’opportuna

“estensione”) di calcolare anche il valore di una delle coppie di coefficienti interi relativi x,y tali che mcd(a,b)=ax+by.

A tale scopo, se n è il numero delle divisioni dell’algoritmo Euclideo, costruiamo (mediante i quozienti qi delle divisioni) le 2 seguenti successioni di numeri interi 0:

s0 ,s1,…..,sn,sn+1 ; t0,t1,….,tn,tn+1

ponendo

s0=1, s1=0, si=si-2+si-1qi-1 (per ogni i>1);

t0=0, t1=1, ti=ti-2+ti-1qi-1 (per ogni i>1)

dove qi-1 è il quoziente della divisione numero (i-1) nell’algoritmo Euclideo.

Verifichiamo che vale la seguente eguaglianza per ogni i=1,2,…,n:

ri =(-1)i+1(asi+1-bti+1) (dove ri =resto della divisione numero i nell’algoritmo Euclideo).

Usiamo il principio di induzione (IIa forma). Per i=1 l’eguaglianza è vera, in quanto dalla prima divisione dell’algoritmo Euclideo si ricava r1=a-bq1=(-1)1+1(as2-bt2) (notare che per costruzione si ha s2=1,t2=q1).

Supponiamo vera l’eguaglianza per tutti gli indici j<i, e dimostriamola per i (supponendo i>1).

Poiché per ipotesi è vera in particolare per j=i-2, i-1, si ricava (dalla divisione numero i):

ri = ri-2 – ri-1qi = (-1)i-1(asi-1-bti-1)-(-1)i( asi-bti)qi = a((-1)i-1si-1-(-1)isiqi)-b((-1)i-1ti-1-(-1)itiqi) =

= (-1)i+1(asi+1-bti+1)

il che dimostra che la tesi è vera anche per l’indice i (per dedurre l’ultima eguaglianza basta distinguere i casi in cui i è pari o dispari e sfruttare la definizione dei termini si+1, ti+1)

In particolare, applicando l’eguaglianza dimostrata all’indice i=n-1 otteniamo mcd(a,b) = rn-1 = (-1)n(asn-btn) = a(-1)nsn+b(-1)n+1tn

e basta porre

x=(-1)nsn, y=(-1)n+1tn

per avere una coppia di coefficienti interi relativi x, y tali che mcd(a,b)=ax+by .

Calcoliamo la complessità computazionale dell’algoritmo Euclideo delle divisioni successive

“esteso”, supponendo sempre a>b: poniamo x=L(a)y=L(b) . Facciamo alcune osservazioni che saranno utili in seguito:

1) Dalla prima divisione dell’algoritmo Euclideo segue:

a=bq1+r1bq1q1 (perché b1) dalla seconda divisione:

a>b=r1q2+r2r1q2q2

Così procedendo (o più formalmente ragionando per induzione) si ottiene che in generale qi≤a per ogni i=1,…..,n .

2) Nelle successioni si, ti costruite nell’algoritmo Euclideo esteso, si ha:

si-1ti - siti-1 = (-1)i+1 per ogni i=1,….,n+1.

Ciò si dimostra usando il principio di induzione (Ia forma). Per i=1 è facile verificarlo, in quanto:

s0t1 – s1t0 = 1.

Supponiamolo vero per i e dimostriamolo per i+1; si ha:

siti+1 - si+1ti = si(ti-1+tiqi)-(si-1+siqi)ti= -(si-1ti - siti-1) = (-1)(-1)i+1= (-1)i+2 come si voleva.

In particolare per ogni i=1,….,n+1 il numero 1 è combinazione lineare di si, ti a coefficienti interi relativi (precisamente per i pari si ha 1 = siti-1+ti(-si-1), mentre per i dispari si ha 1 = si(-ti-1)+tisi-1) dunque (per una proprietà dei numeri coprimi) si, ti sono coprimi per ogni i=1,….,n+1.

(2)

3) Dall’eguaglianza ri =(-1)i+1(asi+1-bti+1) (dimostrata valida per ogni i=1,….,n) moltiplicando ambo i membri per(-1)i+1 si ottiene (-1)i+1ri = asi+1-bti+1. In particolare per i=n si ha:

asn+1-btn+1 = (-1)n+1rn =0 dunque:

asn+1 = btn+1

Poiché sn+1, tn+1 sono numeri coprimi (per la 2)), e poiché sn+1btn+1, tn+1asn+1, si ha sn+1b, tn+1a (per una proprietà dei numeri coprimi) e in particolare sn+1≤b<a, tn+1≤a.

Ma per costruzione si=si-2+si-1qi-1 si-1qi-1  si-1 ed analogamente ti ti-1 (per ogni i=1,….,n+1), ossia:

si≤ sn+1≤b<a, ti ≤tn+1≤a per ogni i=1,….,n+1.

In conclusione tutti i termini delle successioni si, ti sono ≤a . Ricordando che :

si=si-2+si-1qi-1 ; ti=ti-2+ti-1qi-1 per ogni i>1

(oltre i termini s0,s1, t0, t1 predeterminati con valore costante) il calcolo di ognuno dei 2n termini s2,

….,sn+1,t2,….,tn+1 delle 2 successioni si ottiene da una somma ed un prodotto che coinvolgono numeri ≤a (vedere tutte le osservazioni precedenti), quindi numeri di lunghezza binaria ≤x, e conseguentemente ognuno di tali 2n termini è calcolabile con un algoritmo di complessità

O(x+x2)=O(x2).

Poiché abbiamo già visto che il numero n di divisioni dell’algoritmo Euclideo è di ordine ≤O(x), questa “estensione” dell’algoritmo Euclideo ha complessità ≤O(x3): si conclude che (avendo l’algoritmo Euclideo complessità ≤O(x3)), questo algoritmo Euclideo esteso ha complessità globale polinomiale O(x3+x3)=O(x3), come l’algoritmo Euclideo originale.

Nota: si può dimostrare che in effetti l’algoritmo Euclideo esteso ha complessità O(x2) (con gli stessi metodi che si usano per dimostrare che l’algoritmo Euclideo ha questa complessità).

Minimo comune multiplo.

Dati 2 numeri naturali a,b, in modo simmetrico alla definizione di mcd(a,b), si può definire il minimo comune multiplo mcm(a,b): è un numero naturale che è multiplo comune di a,b ed è divisore di tutti i numeri naturali multipli comuni di a,b (in particolare è il minimo dei numeri naturali multipli comuni di a,b).

Non è però necessario costruire un algoritmo per calcolarlo, ma basta usare il seguente risultato:

dati 2 numeri naturali a,b si ha mcm(a,b)=(ab)/mcd(a,b).

Infatti, posto d=mcd(a,b), dimostriamo che il numero naturale m=ab/d ha le proprietà che caratterizzano il mcm(a,b).

Si ha ab/d=b(a/d)=a(b/d), dove a/d, b/d sono numeri naturali, quindi ab/d è multiplo comune di a,b.

Se poi z è un numero naturale multiplo comune di a,b, allora az, bz, quindi (a/d)(z/d), (b/d)(z/d); ma a/d, b/d sono coprimi (per un risultato sui numeri coprimi), dunque, (per un altro risultato sui numeri coprimi) anche il prodotto (a/d)(b/d)=ab/d2 è divisore di z/d, da cui m=ab/d è divisore di z.

Il risultato precedente implica che il calcolo del mcm(a,b) si può effettuare con un algoritmo di complessità O(x3) dove x=L(a) (se a>b): basta utilizzare l’algoritmo di Euclide per calcolare d=mcd(a,b) (complessità O(x3)), calcolare il prodotto ab (di complessità O(x2)) e la divisione ab/d (di complessità O((2x)2)=O(x2), perché L(ab) L(a)+L(b)  2L(a)=2x): se sommiamo le complessità delle varie fasi dell’algoritmo, si ottiene una complessità globale O(x3) .

(3)

Il concetto di massimo comune divisore si può facilmente estendere al caso di un numero qualunque r>1 di numeri naturali a1, a2, …, ar: il mcd(a1, a2, …, ar) è un numero naturale d divisore comune di tutti gli ai e multiplo di tutti i naturali divisori comuni degli ai.

E’ facile verificare che mcd(a1, a2, …, ar)=mcd(mcd(a1, a2, …, ar-1),ar), quindi si può ricondurre (con un procedimento iterativo) il calcolo del mcd al caso di 2 soli numeri naturali a,b.

Analoghe considerazioni si possono fare per la definizione e il calcolo del mcm(a1,a2….,ar).

Ovviamente se x è la massima lunghezza binaria degli ai, dovendosi effettuare (r-1) volte il calcolo del massimo comune divisore, la complessità totale dell’algoritmo è di ordine O((r-1)x3).

Se il numero r è costante (indipendente da x), tale complessità è dunque di ordine O(x3). Se invece r = f(x) è funzione di x allora ovviamente la complessità dipende da O(f(x)).

Analoghe considerazioni si possono fare per il minimo comune multiplo di r numeri naturali.

Numeri primi.

Per ogni numero naturale a, i numeri naturali 1,a sono ovviamente divisori di a, detti divisori banali di a.

Un numero naturale p è detto numero primo se p>1 e se gli unici divisori naturali di p sono quelli banali.

Lemma.

Se p, a1, a2, … ,an sono numeri naturali, con p numero primo, e se p(a1a2… an) allora pai per qualche i=1,2,....,n.

Dimostrazione:

Per induzione su n (Ia forma).

Per n=1 la tesi è banale.

Supponiamo la tesi vera per n e dimostriamola per n+1.

Se p(a1a2… anan+1), dimostriamo che pai per qualche i=1,2,...,n,n+1.

Distinguiamo 2 casi:

- se pan+1 non vi è niente da dimostrare

- se p non è divisore di an+1 allora 1=mcd(p,an+1) (perché p è primo e p non è divisore di an+1), dunque p,an+1 sono coprimi e, per una delle proprietà dei numeri coprimi, da p[(a1a2… an)an+1] segue p(a1a2… an); per l’ipotesi induttiva si ha allora pai per qualche i=1,2,..,n, cioè la tesi.

Teorema di fattorizzazione unica.

Ogni numero naturale n>2 è fattorizzabile nel prodotto di un numero finito di numeri primi (al limite con un solo fattore). Inoltre tale fattorizzazione è unica a meno dell’ordine dei fattori, nel senso che se:

p1p2…..pr = q1q2…..qs con pi , qj primi si ha r=s, e (riordinando opportunamente i fattori) pi=qi per ogni i . Dimostrazione:

Esistenza della fattorizzazione. Per assurdo sia non vuoto l’insieme S di tutti i numeri naturali >1 non fattorizzabili nel prodotto di un numero finito di numeri primi, e sia a il minimo in S.

In particolare a non è primo, e sia b un divisore naturale non banale di a:

a=bc per un opportuno c numero naturale, con b1, ba quindi 1<b<a.

Simmetricamente si ha anche c1, ca quindi 1<c<a. Essendo a minimo in S si ha b,cS, ossia b,c sono fattorizzabili nel prodotto di un numero finito di numeri primi, dunque lo è a, contraddizione.

Unicità della fattorizzazione. Sia p1p2…..pr = q1q2…..qs con pi , qj primi.

Poiché p1(q1q2…..qs) , per il Lemma si ha p1qi per qualche i=1,…,s, e (riordinando opportunamente i fattori) possiamo supporre p1q1 . Essendo p1,q1 primi (quindi >1), si ha p1=q1. Dividendo per p1 si ha p2…..pr = q2…..qs e si può iterare il procedimento ottenendo pi=qi per ogni i .

(4)

Resta da verificare che r=s: se per assurdo fosse (per esempio) r>s, si avrebbe, dopo s iterazioni del processo precedente:

ps+1…..pr =1 contraddizione perché ogni pi>1 .

Dimostriamo alcune semplici conseguenze del Teorema di fattorizzazione unica.

Corollario 1

La radice quadrata di un numero primo p è un numero irrazionale.

Dimostrazione. Per assurdo supponiamo l’esistenza di 2 numeri naturali a,b tali che p=(a/b)2=a2/b2, da cui pb2=a2.

Poiché p>1, si ha a>1. D’altronde anche b>1 (se fosse b=1 si avrebbe p=a2, dunque a sarebbe divisore non banale del primo p, contraddizione). Essendo a,b numeri naturali >1, per il Teorema di fattorizzazione unica si possono ciascuno fattorizzare in prodotto di primi:

a = p1p2…..pr b = q1q2……qs

da cui:

pb2 = pq12q22

……qs2 = p12p22

……pr2

Per l’unicità della fattorizzazione il numero 2s+1 (dispari) di fattori del primo membro dovrebbe coincidere con il numero 2r (pari) di fattori del secondo, contraddizione.

Corollario 2 (Euclide).

Esistono infiniti numeri primi.

Dimostrazione. Per assurdo supponiamo finito l’insieme P di tutti i numeri primi e consideriamo il seguente numero naturale >1: a=(

pÎP

p)+1 .

Per il Teorema di fattorizzazione unica, esiste un divisore primo p0P di a (basta scegliere come p0

un qualunque fattore primo nella fattorizzazione di a), da cui, essendo p0

pÎP

p, si ottiene p01, contraddizione perché p0>1 .

Riferimenti

Documenti correlati

Dimostriamo la (*): se ks allora è banale (in quanto ks&lt;rm dunque basta

Ricordiamo che un test di primalità probabilistico è un algoritmo tale che, dato in input un numero naturale n&gt;1, dopo una serie di calcoli che coinvolgono anche alcuni

Siamo ora in grado di dimostrare il:. Teorema

Infatti basta per esempio scegliere m=minimo naturale ³j che sia multiplo di k-j : per tale scelta di m si ha allora b m =b 2m (perché m,2m³j, e perché 2mm (mod k-j),

[r]

Alcuni dei principali argomenti trattati nel corso saranno i seguenti: studio della Teoria dei Numeri (soprattutto l’aritmetica dei numeri interi e in particolare dei numeri

Quest’ultimo risultato dimostra che nella stima dell’ordine della somma di funzioni “prevale” quella di ordine maggiore (se gli ordini delle 2 funzioni sono confrontabili): se

Nella lezione precedente abbiamo detto che sceglieremo come operazione elementare (che funga da “unità di misura” della complessità di un algoritmo) l’operazione di somma sui