• Non ci sono risultati.

Massimo comun divisore Lemma 1.1

N/A
N/A
Protected

Academic year: 2021

Condividi "Massimo comun divisore Lemma 1.1"

Copied!
19
0
0

Testo completo

(1)

Antonino Salibra

Universit`a Ca’Foscari Venezia 18 Novembre 2019

Nel seguito indicheremo con Z l’insieme dei numeri interi.

Scriveremo talvolta a|b al posto di “a divide b”. Questo significa che esiste c ∈ Z tale che b = ac. Ricordiamo che ogni numero intero divide 0.

1. Massimo comun divisore

Lemma 1.1. Dati due interi a e b con b 6= 0, esiste un’unica coppia di interi q (quoziente) ed r (resto) tali che a = bq + r con 0 ≤ r < |b|, dove |b| `e il valore assoluto di b.

Proof. Consideriamo l’insieme A = {a − bz : z ∈ Z}. Sia r il minimo elemento ≥ 0 di A.

Allora esiste q ∈ Z tale che a = bq + r. Se fosse r ≥ |b|, allora 0 ≤ r − |b| < r. Se b > 0, allora a = b(q + 1) + (r − b), mentre se b < 0 allora a = b(q − 1) + (r − |b|). In ogni caso, r non sarebbe il minimo elemento ≥ 0 di A. Contraddizione.

Example 1.1. Se a = 17 e b = −3, allora 17 = (−3)(−5) + 2. Se a = −17 e b = −3 allora −17 = (−3)6 + 1.

Se a1, . . . , an sono interi, allora a1Z + · · · + anZ denota l’insieme di tutti gli interi che hanno la forma k1a1 + · · · + knan per opportuni k1, . . . , kn ∈ Z. Se a ∈ Z, allora aZ = {ka : k ∈ Z} `e l’insieme dei multipli di a. L’insieme a1Z + · · · + anZ si chiama ideale generato da a1, . . . , an.

Consideriamo due esempi: 2Z + 3Z = Z perch´e 1 = 3 − 2 e quindi un arbitrario intero x si scrive come 3x + 2(−x), mentre lasciamo al lettore la verifica che l’ideale 4Z + 10Z `e l’insieme dei numeri pari.

Lemma 1.2. 1. a|b1, . . . , a|bn sse b1Z + · · · + bnZ ⊆ aZ.

2. a = ±b sse bZ = aZ.

In particolare, abbiamo:

b `e un multiplo di a sse bZ ⊆ aZ e

a divide b sse aZ ⊇ bZ.

Per esempio, da 3 divide 6 segue che 3Z ⊇ 6Z. In altre parole, ogni multiplo di 6 `e anche multiplo di 3.

1

(2)

Lemma 1.3. Siano a e b numeri interi non entrambi nulli. Allora aZ + bZ = dZ, dove d `e il minimo intero positivo che appartiene all’ideale aZ + bZ.

Proof. Da d ∈ aZ + bZ si ricava d = xa + yb per opportuni x, y ∈ Z.

(dZ ⊆ aZ + bZ): Ogni multiplo di d si scrive come kd = (kx)a + (ky)b, da cui si ha dZ ⊆ aZ + bZ.

(aZ + bZ ⊆ dZ): Sia c ∈ aZ + bZ, ossia c = za + tb per opportuni z, t ∈ Z. Dividendo c per d si ottiene c = dq + r per opportuni q ed r tali che 0 ≤ r < d. Sostituendo c = za + tb e d = xa + yb si ricava: za + tb = c = qd + r = qxa + qyb + r. Quindi r = (z − qx)a + (t − qy)b ∈ aZ + bZ. Siccome d `e il minimo intero positivo in aZ + bZ, si deduce r = 0 e quindi c = dq ∈ dZ.

Ricordiamo che ogni numero intero a divide 0 perch´e 0 = a0.

Lemma 1.4. Siano a e b numeri interi. Allora esiste un unico numero d ≥ 0 che verifica le seguenti propriet`a:

(i) d|a e d|b;

(ii) Se c|a e c|b, allora c|d.

Se a, b sono non entrambi nulli, allora dZ = aZ + bZ.

Proof. Se a = b = 0, allora d = 0, perch´e 0 `e l’unico numero intero che ammette come divisori tutti i numeri interi.

Se a = 0 e b 6= 0, allora d = b, perch´e b|0 e b|b. Inoltre, se c|0 e c|b, allora banalmente c|b. In modo simile si tratta il caso a 6= 0 e b = 0.

Se a, b sono entrambi non nulli, definiamo d come il pi`u piccolo intero positivo tale che dZ = aZ + bZ (si veda Lemma 1.3). Allora, (i) segue da a, b ∈ aZ + bZ = dZ. Per provare (ii) notiamo che dall’ipotesi c|a e c|b segue che a, b ∈ cZ e quindi dZ = aZ + bZ ⊆ cZ.

Ossia c divide d.

Si noti che, se non utilizzassimo la teoria degli ideali, non sarebbe banale provare la propriet`a (ii) del lemma precedente.

Definition 1.1. Il massimo comun divisore (MCD) di a e b `e il pi`u grande divisore comune di a e b.

Il massimo comun divisore di a e b coincide con l’unico numero determinato dal Lemma 1.4. Verr`a indicato con MCD(a, b) oppure con (a, b).

Abbiamo (a, b) = (|a|, |b|), dove |a| e |b| sono il valore assoluto di a e b rispettivamente.

Dal Lemma 1.4 segue che (0, b) = b per ogni b ∈ Z.

Definition 1.2. Due numeri interi a, b si dicono relativamente primi se (a, b) = 1.

Un metodo efficiente di calcolo del massimo comun divisore `e l’algoritmo di Euclide.

Lemma 1.5. Siano a e b interi con b 6= 0 e sia a = bq + r con 0 ≤ r < |b|. Allora (a, b) = (b, r).

(3)

Proof. Abbiamo per ipotesi che bZ + rZ ⊆ aZ + bZ, perch´e r = a − bq ∈ aZ + bZ. L’altra inclusione aZ + bZ ⊆ bZ + rZ vale, perch´e a = bq + r. Allora, applicando il Lemma 1.4 si ottiene la conclusione: (b, r)Z = bZ + rZ = aZ + bZ = (a, b)Z.

Euclide(int a, int b) : int {int r;

while (b 6= 0) do //ripetere finch´e non riduciamo b a zero begin

r := modb(a) //resto della divisione di a per b;

a := b;

b := r;

end;

return a; //quando la variabile b diventa 0, il massimo comun divisore `e il valore della variabile a L’algoritmo consiste in una serie di divisioni con resto:

a = b · q1 + r2 0 ≤ r2 < |b|

b = r2· q2+ r3 0 ≤ r3 < r2 r2 = r3· q3+ r4 0 ≤ r4 < r3

r3 = r4· q4+ r5 0 ≤ r5 < r4

... ... ...

rt−2 = rt−1· qt−1+ rt 0 ≤ rt < rt−1 rt−1 = rt· qt+ 0 Allora rt= (a, b)

(1)

Se indichiamo con C(a, b) il numero di volte che calcoliamo la divisione con resto nell’algoritmo di Euclide, allora in (1) di sopra abbiamo C(a, b) = t.

Example 1.2. C(a, 1) = 1 per ogni a > 1.

Example 1.3. (134, 36) = (36, 26) = (26, 10) = (10, 6) = (6, 4) = (4, 2) = (2, 0). In tal caso, C(134, 36) = 6.

Example 1.4. La successione di Fibonacci `e definita ricorsivamente come segue:

F1 = 1; F2 = 1; Fn = Fn−1+ Fn−2.

I primi elementi della successione sono: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, . . . . Il centounesimo numero di Fibonacci `e F101 = 354224848179261915075. Se dividiamo Fn+1

per Fn otteniamo proprio la relazione Fn+1 = Fn+ Fn−1, cio´e il quoto `e 1 ed il resto `e Fn−1 < Fn. Fn+1 e Fn sono relativamente primi:

(Fn+1, Fn) = (Fn, Fn−1) = (Fn−1, Fn−2) = · · · = (F3, F2) = (2, 1) = 1.

n − 1 = C(Fn+1, Fn) `e il numero di volte che calcoliamo la divisione con resto.

Per definizione log2(b) `e uguale al numero reale x tale che 2x = b.

(4)

Lemma 1.6. Siano a > b interi positivi. Il numero di volte C(a, b) che iteriamo la divisione con resto nell’algoritmo di Euclide per il calcolo del massimo comun divisore (a, b) `e al pi`u 2log2(b) + 2.

Proof. Siano r0 = a e r1 = b e

r0 = r1q1+ r2 0 ≤ r2 < r1 r1 = r2q2+ r3 0 ≤ r3 < r2

r2 = r3q3+ r4 0 ≤ r4 < r3 r3 = r4q4+ r5 0 ≤ r5 < r4

... ... ...

rt−2 = rt−1qt−1+ rt 0 ≤ rt< rt−1 rt−1 = rtqt

(2)

Proviamo che ri > 2ri+2, per ogni i ≥ 0. Infatti,

ri = ri+1qi+1+ ri+2 0 ≤ ri+2< ri+1

≥ ri+1+ ri+2 ri > ri+1 da cui segue qi+1≥ 1

> 2ri+2 ri+2< ri+1

(3)

Iterando il procedimento si ottiene:

b = r1 > 2r3 > 22r5 > · · · > 2kr2k+1.

Consideriamo il pi`u piccolo k tale che 2k ≥ b > 2k−1. Da 2k ≥ b segue che r2k+1 < 1, ossia r2k+1 = 0. In termini dell’algoritmo di Euclide (2) si ha rt+1 = 0, cos`ı abbiamo t + 1 ≤ 2k + 1, da cui t ≤ 2k. Inoltre vi sono esattamente t divisioni effettuate in (2), cos`ı l’algoritmo di Euclide termina in al pi`u 2k iterazioni. Allora si ha:

numero di iterazioni ≤ 2k = 2(k − 1) + 2 < 2log2(b) + 2.

Il Lemma seguente spiega come l’algoritmo di Euclide ed i numeri di Fibonacci sono collegati.

Proposition 1.1. Siano a > b > 0 due numeri interi positivi tali che a = bq1+ r2, con 0 ≤ r2 < b. Sia r2 > r3 > · · · > rn > . . . la sequenza dei resti nell’algoritmo di Euclide applicato alla coppia di numeri a e b. Allora, valgono le seguenti condizioni:

1. Per ogni resto rn6= 0, abbiamo

b ≥ Fn−1rn−1+ Fn−2rn > Fnrn ≥ Fn,

dove Fn`e l’ennesimo numero di Fibonacci. Segue che se C(a, b) ≥ k (i.e., nell’algoritmo di Euclide il numero di divisioni con resto per il calcolo del MCD di a e b `e ≥ k), allora b > Fk.

L’esempio seguente fa capire l’efficienza dell’algoritmo di Euclide: se C(a, b) ≥ 101, allora b > F101 = 354224848179261915075.

(5)

Proof. Siano r0 = a > r1 = b due numeri interi positivi arbitrari. Allora, r0 = r1q1+ r2

con 0 ≤ r2 < r1, ed inoltre

r1 = r2q2+ r3, 0 ≤ r3 < r2.

Proveremo per induzione su n che b ≥ Fn−1rn−1+ Fn−2rn> Fnrn. Iniziamo dal caso base.

Da q2 > 0 si ottiene

b = r1 ≥ r2 + r3 = F2r2+ F1r3 > 2r3 = F3r3,

perch´e 0 ≤ r3 < r2 e F1 = F2 = 1. Supponiamo per ipotesi di induzione che b = r1 ≥ Fn−1rn−1+ Fn−2rn> Fnrn.

Proviamo che b = r1 ≥ Fnrn + Fn−1rn+1 > Fn+1rn+1. Da rn−1 = rnqn + rn+1 con 0 ≤ rn+1< rn si ha:

b = r1

≥ Fn−1rn−1+ Fn−2rn by Ind. Hp.

= Fn−1(rnqn+ rn+1) + Fn−2rn by rn−1 = rnqn+ rn+1

≥ Fn−1(rn+ rn+1) + Fn−2rn by qn ≥ 1

= Fn−1rn+ Fn−1rn+1+ Fn−2rn

= Fnrn+ Fn−1rn+1 by Fn= Fn−1+ Fn−2

> Fn+1rn+1 by rn > rn+1.

Concludiamo la sezione con il Teorema di Bezout che determina le soluzioni delle equazioni lineari del tipo ax + by = c.

Lemma 1.7. Siano a, b numeri interi non entrambi nulli. Allora esistono interi x e y tali che ax + by = (a, b).

Proof. Dal Lemma 1.3 segue che aZ + bZ = dZ, dove d = (a, b) `e il massimo comun divisore di a, b.

Theorem 1.1. (Propriet`a di B´ezout) Siano a, b, c numeri interi e sia d = (a, b) il massimo comun divisore di a, b. Allora l’equazione lineare ax + by = c ha soluzioni intere sse d|c.

Proof. Dal Lemma 1.3 si ha aZ + bZ = dZ. Quindi c ∈ aZ + bZ sse c ∈ dZ.

Osservazione: Siano a, b interi non entrambi nulli. Allora l’equazione lineare ax + by = 0 rappresenta la retta dei vettori (x, y) che sono ortogonali al vettore (a, b). Dal Lemma 1.3 e dal Teorema di Bezout si ha che la retta ax + by = c parallela alla retta ax + by = 0 passa attraverso dei punti che hanno coordinate intere sse c `e un multiplo di (a, b).

Example 1.5. Trovare una soluzione intera dell’equazione 240x + 36y = 12. Possiamo dividere tutti i coefficienti per 12 ed ottenere 20x + 3y = 1. Siccome 20 e 3 sono relati- vamente primi (cio´e (20, 3) = 1) allora le soluzioni intere di 20x + 3y = 1 esistono. Si vede facilmente che x = −1 e y = 7 `e una soluzione di 20x + 3y = 1. La stessa soluzione risolve 240x + 36y = 12.

(6)

Example 1.6. Trovare una soluzione intera dell’equazione 120x + 81y = 12. Dividendo per 3 si ottiene 40x + 27y = 4. Siccome 40 e 27 sono relativamente primi (cio´e (40, 27) = 1) allora le soluzioni intere di 40x + 27y = 1 esistono. Applichiamo l’algoritmo di Euclide per il calcolo del massimo comun divisore: 40 = 27 + 13 e 27 = 13 ∗ 2 + 1. Quindi 1 = 27 − 13 ∗ 2 = 27 − (40 − 27) ∗ 2 = 27 − 40 ∗ 2 + 27 ∗ 2 = (−2)40 + 27 ∗ 3. Quindi una soluzione intera dell’equazione 40x + 27y = 4 `e: x = −8, y = 12. Le stesse soluzioni funzionano per l’equazione lineare 120x + 81y = 12.

Example 1.7. Non esistono soluzioni intere dell’equazione 6x + 2y = 5, perch´e 2 = (6, 2) non divide 5.

1.1. Massimo comun divisore e matrici

Ricordiamo che il minimo comune multiplo di due numeri interi positivi a e b `e il pi`u piccolo naturale k tale che a|k e b|k. `E denotato da mcm(a, b). Si vede facilmente che

ab = mcm(a, b) × MCD(a, b).

Sia a > b > 0. Calcoliamo il massimo comun divisore e il minimo comune multiplo con il metodo matriciale. Consideriamo il sistema lineare

1 0 0 1

 x y



=a b



(4)

Esso ammette banalmente come unica soluzione il vettorea b



. Sappiamo anche che ogni sistema lineare, che si ottiene dal sistema (4) applicando alla matrice completa

A =1 0 a 0 1 b



le regole del metodo di eliminazione di Gauss (scambio di due righe; sostituzione di una riga con la somma della riga stessa con un’altra moltiplicata per uno scalare r) ammette come unica soluzione il vettore a

b

 .

Se a = bq + r con 0 ≤ r < b, si sottrae alla prima riga q volte la seconda riga e poi si scambiano la prima e la seconda riga:

1 0 a 0 1 b



⇒ 1 −q a − bq

0 1 b



=1 −q r

0 1 b



⇒ 0 1 b

1 −q r



Siccome b > r, si procede in maniera simile fino a quando nella terza colonna della matrice non appare uno 0 in posizione A23. Alla fine otterremo una matrice

c d n e f 0



per cui il sistema lineare

c d e f

 x y



=n 0



(7)

ha come unica soluzione il vettorea b

 .

c d e f

 a b



= ca + db ea + f b



=n 0



Allora n = ca + db `e il massimo comun divisore di a e b, mentre il modulo |ea| = |f b| `e il minimo comune multiplo.

L’algoritmo `e il seguente.

Matrice(nat a, nat b) {matrix A; nat q, z}

A :=1 0 a 0 1 b



;

while (A236= 0) do //ripetere finch´e non riduciamo A23 a zero begin

q := AA13

23 //quoto della divisione A13= A23q + r con resto 0 ≤ r < A23;

for i := 1 to 3 do A1i:= A1i− qA2i; //Sottrai q volte la riga 2 dalla riga 1 di A ; for i := 1 to 3 do z := A1i; A1i := A2i; A2i:= z; Scambia le righe 1 e 2 della matrice A;

end;

return A13= A11a + A2b; // A23 = 0 implica (a, b) = A13 = A11a + A12b return A21a = −A22b; // A23 = 0 implica mcm(a, b) = |A21a| = | − A22b|

Example 1.8. Calcoliamo il massimo comun divisore e il minimo comune multiplo di 53 e 71 con il metodo matriciale:

1 0 71 0 1 53



⇒ 0 1 53

1 −1 18



⇒  1 −1 18

−2 3 17



⇒  −2 3 17

3 −4 1



 3 −4 1

−53 71 0

 Quindi,

 3 −4

−53 71

 71 53



=

 3 × 71 − 4 × 53

−53 × 71 + 71 × 53



=1 0

 da cui

(71, 53) = 1 = 3 × 71 − 4 × 53; mcm(71, 53) = 71 × 53.

Example 1.9. (134, 36) = (26, 36) = (26, 10) = (6, 10) = (6, 4) = (2, 4) = (2, 0) perch´e

1 0 134 0 1 36



⇒ 0 1 36

1 −3 26



⇒  1 −3 26

−1 4 10



⇒ −1 4 10

3 −11 6



⇒  3 −11 6

−4 15 4



⇒ −4 15 4

7 −26 2



 7 −26 2

−18 67 0

 Quindi,

 7 −26

−18 67

 134 36



=

 7 × 134 − 26 × 36

−18 × 134 + 67 × 36



=2 0

 da cui

(134, 36) = 2 = 7 × 134 − 26 × 36; mcm(134, 36) = 67 × 36 = 18 × 134 = 2412.

(8)

Example 1.10. Calcoliamo il massimo comun divisore di numeri di Fibonacci consecutivi (si veda esempio 1.4). Poniamo F−2 = 1 e F−1 = 0.

1 0 Fn 0 1 Fn−1



⇒ 0 1 Fn−1 1 −1 Fn−2



⇒  1 −1 Fn−2

−1 2 Fn−3



⇒ −1 2 Fn−3 2 −3 Fn−4



⇒  2 −3 Fn−4

−3 5 Fn−5



⇒ −3 5 Fn−5 5 −8 Fn−6



⇒  5 −8 Fn−6

−8 13 Fn−7



⇒ . . .

Si noti che i numeri 2, 3, 5, 8, 13, . . . che compaiono nella matrice sono numeri di Fi- bonacci. In altri termini,

 F−2 −F−1 Fn

−F−1 F0 Fn−1



⇒ −F−1 F0 Fn−1 F0 −F1 Fn−2



⇒  F0 −F1 Fn−2

−F1 F2 Fn−3



⇒ −F1 F2 Fn−3 F2 −F3 Fn−4



⇒  F2 −F3 Fn−4

−F3 F4 Fn−5



⇒ −F3 F4 Fn−5 F4 −F5 Fn−6



⇒  F4 −F5 Fn−6

−F5 F6 Fn−7



⇒ . . . Si noti che ad ogni passo abbiamo

F2iFn− F2i+1Fn−1= Fn−(2i+2); F2i−1Fn− F2iFn−1 = −Fn−(2i+1) Se n `e pari e 2i + 2 = n si ha

1 = F0 = Fn−2Fn− Fn−12 . Se n `e dispari e 2i + 1 = n si ha

Fn−12 −Fn−2Fn = 1 = (Fn, Fn−1); Fn−1Fn−FnFn−1 = F−1 = 0; mcm(Fn, Fn−1) = Fn−1Fn

2. L’aritmetica dell’orologio

L’aritmetica modulare (o aritmetica dell’orologio) `e stata introdotta da Gauss ad inizio ottocento. Consideriamo un orologio con n > 0 tacche che corrispondono ad i numeri da 0 a n − 1 (Si veda la figura nel caso n = 9). Indichiamo con Zn l’insieme {0, 1, . . . , n − 1}. Scorriamo l’orologio in senso orario partendo da 0. Una mossa +1 consiste nello spostarsi in senso orario dalla tacca in cui ci troviamo alla tacca successiva. La mossa +1 corrisponde all’operazione di aggiungere 1. Quando arriviamo al numero n − 1 ed eseguiamo una ulteriore mossa +1, scopriamo che (n − 1) + 1 = 0 anzich´e (n − 1) + 1 = n.

Quindi, contrariamente ai numeri naturali, il numero 0 `e il successore del numero n − 1 e la funzione determinata dalle mosse +1 definisce una funzione bigettiva dall’insieme Zn nell’insieme Zn. Viceversa, scorriamo l’orologio in senso antiorario partendo da 0.

Una mossa −1 consiste nello spostarsi in senso antiorario dalla tacca in cui ci troviamo alla tacca precedente. La mossa −1 corrisponde a sottrarre 1. Quindi 0 − 1 = n − 1 anzich´e essere indefinito come avviene nell’aritmetica dei numeri naturali. La funzione determinata dalle mosse −1 definisce una funzione bigettiva dall’insieme Zn nell’insieme Zn. Essa `e la funzione inversa della funzione determinata dalle mosse +1.

(9)

Figure 1. Aritmetica dell’orologio

Come possiamo “rappresentare” un intero a nell’orologio? Adottiamo due strategie diverse se a `e positivo oppure negativo. Se a `e positivo, eseguiamo esattamente un numero di mosse +1 pari ad a volte partendo da 0. La tacca in cui ci troviamo rappresenta il numero intero positivo a nell’orologio. Se a `e negativo, eseguiamo esattamente un numero di mosse −1 pari ad |a| volte partendo da 0. La tacca in cui ci troviamo rappresenta il numero intero negativo a nell’orologio. In entrambi i casi la tacca del numero a rappresenta il resto della divisione di a per n che scriveremo

modn(a).

E un numero naturale compreso tra 0 e n − 1.`

Notazione: Talvolta scriveremo a mod n al posto di modn(a).

Definiamo la somma +n (modulo n) ed il prodotto ∗n (modulo n) sui numeri interi come segue:

a +nb = modn(a + b); a ∗nb = modn(ab).

Il risultato della somma e del prodotto `e sempre un valore compreso tra 0 e n − 1, quindi rappresentabile nell’orologio.

Lemma 2.1. L’insieme Zn= {0, 1, . . . , n − 1} `e chiuso rispetto alle operazioni di somma +n e prodotto ∗n.

Per semplificare i conti, utilizziamo la seguente proposizione

(10)

Proposition 2.1. Valgono le seguenti uguaglianze (a, b ∈ Z):

1. modn(a + b) = modn(modn(a) + modn(b));

2. modn(ab) = modn(modn(a) modn(b)).

Example 2.1. Sia n = 9. Allora mod9(95 · 37) = mod9(mod9(95)mod9(37)) = mod9(5 · 1) = mod9(5) = 5. Se non avessimo utilizzato la proposizione avremmo dovuto calcolare mod9(3515), che `e pi`u difficile specialmente se n `e grande.

L’aritmetica dell’orologio `e correlata alla teoria delle congruenze che introduciamo nella prossima sezione.

3. Congruenze

Le tacche numerate dell’orologio della sezione precedente sono i rappresentanti delle n classi di equivalenza di una relazione di equivalenza ≡ndefinita sugli interi. Nella prossima definizione introduciamo la relazione ≡n.

Definition 3.1. Sia n > 0. Diciamo che a, b ∈ Z sono congruenti modulo n, e scriviamo a ≡ b (mod n) oppure a ≡nb,

se modn(a) = modn(b).

Quindi abbiamo a ≡n b se il resto della divisione di a per n `e uguale al resto della divisione di b per n.

Lemma 3.1. Sia n > 0 e siano a e b numeri interi. Allora, a ≡n b sse n divide b − a.

Proof. Supponiamo che a ≡n b. Allora, dividendo a e b per n, si ha: a = q1n + r e b = q2n + r con 0 ≤ r < n. Ne segue che b − a `e divisibile per n: b − a = n(q2− q1).

Per la direzione opposta, supponiamo che b−a = nt per un opportuno t ∈ Z. Dividiamo sia a che b per n: a = q1n + r1 e b = q2n + r2 con 0 ≤ r1, r2 < n. Allora, b − a = n(q2− q1) + (r2− r1) = nt, da cui segue r2− r1 = n(t + q1− q2). Ma |r2− r1| < n. Quindi l’unica possibilit`a `e che r1 = r2.

Lemma 3.2. La relazione ≡n `e una relazione di equivalenza su Z che `e compatibile rispetto alle operazioni di addizione, moltiplicazione e esponenziazione di interi:

(i) a ≡n b ∧ c ≡nd ⇒ a + c ≡n b + d.

(ii) a ≡nb ∧ c ≡n d ⇒ ac ≡n bd.

(iii) a ≡n b ⇒ aknbk.

Proof. Sia modn(a) = modn(b) e modn(c) = modn(d).

(i) Dalla Proposizione 2.1(1) e dall’ipotesi si ha: modn(a + c) = modn(modn(a) + modn(c)) = modn(modn(b) + modn(d)) = modn(b + d).

(ii) La prova `e simile a quella del punto (i).

(iii) La prova `e per induzione su k utilizzando (ii).

(11)

La relazione ≡npartiziona Z in n classi di equivalenza. Se a `e un intero scriveremo [a]n per la classe di equivalenza di a modulo l’equivalenza ≡n. Ecco la partizione determinata da ≡n:

[0]n= {kn : k ∈ Z}; [1]n = {1 + kn : k ∈ Z}; . . . [n − 1]n= {(n − 1) + kn : k ∈ Z}.

Scegliamo come rappresentanti delle classi di equivalenza i numeri 0, 1, 2, . . . , n − 1.

Questi numeri corrispondono alle tacche di un orologio che segna le ore da 0 sino ad n − 1 (si veda la figura con n = 4).

Figure 2. Aritmetica dell’orologio modulo 4

Le operazioni di somma +n e prodotto ∗n, definite nella sezione precedente, agiscono sulle classi di equivalenza modulo n tramite i loro rappresentanti.

Proposition 3.1. L’insieme Zn = {0, 1, 2, . . . , n − 1} con le operazioni di somma +n e prodotto ∗n modulo n costituisce un anello commutativo con unit`a. Questo significa che (Zn, +n, 0) `e un gruppo commutativo rispetto alla somma:

• Propriet`a associativa: (x +ny) +nz = x +n(y +nz);

• Propriet`a commutativa: x +ny = y +nx;

• Elemento neutro: x +n0 = x = 0 +nx;

• Opposto: x +n(−x) = 0 = (−x) +nx.

(Zn, ∗n, 1) `e un monoide commutativo rispetto al prodotto:

• Propriet`a associativa: (x ∗ny) ∗nz = x ∗n(y ∗nz);

(12)

• Propriet`a commutativa: x ∗ny = y ∗nx;

• Elemento neutro: x ∗n1 = x = 1 ∗nx;

Il prodotto distribuisce rispetto alla somma:

• x ∗n(y +nz) = (x ∗ny) +n(x ∗nz).

Nei prossimi due lemmi studiamo propriet`a di cancellazione e periodicit`a delle potenze.

Lemma 3.3. Propriet`a di cancellazione: ac ≡nbc ∧ (c, n) = 1 ⇒ a ≡n b.

Proof. Dal Lemma 1.7 e dall’ipotesi (c, n) = 1 esistono interi x e y tali che cx + ny = 1.

Siccome cx = n(−y) + 1, allora cx ≡n 1. Dal Lemma 3.2(ii) si ricava acx ≡na e bcx ≡nb.

Dall’ipotesi ac ≡nbc segue che acx ≡n bcx. Quindi a ≡n b.

Lemma 3.4. Sia n > 0 ed a un intero. La sequenze di potenze modulo n

a0 a1 a2 a3 a4 a5 a6 . . .

1 modn(a1) modn(a2) modn(a3) modn(a4) modn(a5) modn(a6) . . .

`

e periodica a partire da un certo punto in poi: esistono k e p ≤ n tali che akn ak+rp per ogni r ≥ 0.

Example 3.1. Calcoliamo le potenze del 3 modulo 7:

30 31 32 33 34 35 36

1 3 2 6 4 5 1

Il periodo `e 6. Per esempio 32 ≡ 38. Infatti 38 = 32367 32. Example 3.2. Calcoliamo le potenze del 2 modulo 8:

20 21 22 23 24

1 2 4 0 0

Il periodo `e 1 a partire da 23.

Concludiamo la sezione con una serie di esempi che provano l’utilit`a della Proposizione 2.1 e dell’aritmetica modulare.

Example 3.3. Vogliamo calcolare qual’`e il resto della divisione di 95758 per 5. Siccome 10 `e divisibile per 5, si ha che 95758 = 8 + 5 · 10 + 7 · 102+ 5 · 103+ 9 · 1045 8 ≡5 3.

Example 3.4. Vogliamo calcolare qual’`e il resto della divisione di 95758 per 7. Siccome 10 `e 3 modulo 7, si ha che

95758 = 8 + 5 · 10 + 7 · 102+ 5 · 103+ 9 · 104

7 1 + 5 · 3 + 0 · 32+ 5 · 33+ 2 · 34

7 1 + 15 + 5 · 32· 3 + 2 · 32· 32

7 1 + 1 + 5 · 2 · 3 + 2 · 2 · 2

7 2 + 2 + 1 = 5

(13)

Example 3.5. Vogliamo determinare mod5(95758 · 37988). Piuttosto che eseguire prima la moltiplicazione e poi il calcolo del resto della divisione per 5, calcoliamo direttamente il resto della divisione di 95758 per 5 ed il resto della divisione di 37988 per 5. Si ha:

mod5(95758) = 3 e mod5(37988) = 3. Quindi mod5(95758 · 37988) = 4.

Example 3.6. Calcoliamo 3128 modulo 7. Siccome 33 = 27 ≡7 −1, allora 3128 = 33·42+2 = (33)42· 327 (−1)42· 2 = 2.

4. Teoremi di Fermat e di Wilson

Pierre de Fermat, uno dei matematici pi`u importanti dell’ultimo millennio, `e nato il 17 agosto 1601 a Beaumont-de-Lomagne (Francia) ed `e morto il 12 gennaio 1665 a Castres.

Era magistrato di professione e si occupava di matematica nel tempo libero. Presentiamo qui di seguito uno dei suoi risultati pi`u importanti.

Theorem 4.1. (Piccolo Teorema di Fermat) Se p `e un numero primo e p non divide a, allora ap−1p 1.

Proof. Consideriamo i seguenti multipli positivi di a:

a, 2a, 3a, . . . , (p − 1)a.

Nessuno di questi numeri `e congruente ad un altro modulo p: se na ≡p ma allora dal Lemma 3.3 potremmo cancellare a ed ottenere m ≡p n, che `e impossibile in quanto 1 ≤ n, m ≤ p − 1. Quindi i numeri a, 2a, 3a, . . . , (p − 1)a modulo p corrispondono in un qualche ordine ai numeri 1, 2, 3, . . . , p − 1. Si ha quindi:

a · 2a · 3a · · · (p − 1)a ≡p 1 · 2 · 3 · · · (p − 1) da cui

ap−1(p − 1)! ≡p (p − 1)!

Cancellando (p − 1)!, che non `e divisibile per p, da entrambi i membri otteniamo la conclusione1.

Corollary 4.1. Se p `e primo, allora app a.

Example 4.1. Vogliamo calcolare 5236 modulo 13. Applicando il Piccolo Teorema di Fermat sappiamo che 512131. Quindi

5236 = 512·19+8 = (512)19581311958 = 58 = (52)413(−1)4 = 1

1Un’altra prova del Piccolo Teorema di Fermat si ottiene per induzione su a come segue. La base dell’induzione a = 1 `e ovvia. Supponiamo vero il teorema per a e dimostriamolo per a + 1:

(a + 1)p=

p

X

i=0

( p!

i!(p − i)!)ai

Siccome i!(p−i)!p! p0 per ogni 1 ≤ i ≤ p − 1 si ha:

(a + 1)ppap+ 1 ≡pa + 1.

perch´e per ipotesi di induzione appa.

(14)

Theorem 4.2. Se p e q sono primi distinti tali che apq a e aqp a, allora apqpq a.

Proof. Dal Corollario 4.1 si ha (ap)qq ap e (aq)pp aq. Per ipotesi apq a e aqp a, quindi apqqa e apqp a. In conclusione p|apq− a e q|apq− a e quindi pq|apq− a.

Example 4.2. Consideriamo p = 11 e q = 31 numeri primi. Allora 211= 2 · 210 = 2 · 25· 25312 · 1 · 1 = 2.

Per il Piccolo Teorema di Fermat si ha anche:

231= 2(210)3112 · 13 = 2.

Applicando il teorema precedente si ha

211·3111·31 2 che si pu`o anche scrivere

23413412.

Theorem 4.3. Se p `e un numero primo, allora (Zp, +p, 0, ∗p, 1) `e un campo numerico.

Proof. Dalla Proposizione 3.1 dobbiamo soltanto provare che ogni elemento a ∈ Zp ha un inverso. La conclusione segue dal Piccolo Teorema di Fermat perch´e

aap−2p 1.

Quindi ap−2`e l’inverso di a.

Theorem 4.4. (Teorema di Wilson) Se p `e primo, allora (p − 1)! ≡p −1.

Proof. Supponiamo p > 3 primo. Sia 1 ≤ a ≤ p − 1. Consideriamo la congruenza lineare ax ≡p 1. Siccome a e p sono relativamente primi, questa congruenza ammette un’unica soluzione modulo p. Quindi esiste un unico a0 con 1 ≤ a0 ≤ p − 1 tale che aa0p 1.

Dal fatto che p `e primo segue che a = a0 soltanto per a = 1 e a = p − 1. Infatti la congruenza quadratica a2p 1 si scrive a2 − 1 = (a − 1)(a + 1) ≡p 0. Si ricava a = 1 oppure p|a + 1 da cui a = p − 1.

Da tutto questo segue che

2 · 3 · · · (p − 2) ≡p 1 che si scrive anche

(p − 2)! ≡p 1.

Quindi

(p − 1)! = (p − 1) · (p − 2)! ≡p p − 1 ≡p −1.

Chiudiamo questa sezione con una applicazione del Teorema di Wilson allo studio delle congruenze quadratiche.

(15)

Theorem 4.5. Sia p un numero primo dispari. La congruenza quadratica x2p −1 ammette una soluzione modulo p sse p ≡4 1.

Proof. (⇒) Supponiamo che esista a tale che a2p −1. Ricordiamo che p−1 `e un numero pari. Dal Piccolo Teorema di Fermat abbiamo:

1 ≡p ap−1= (a2)p−12p (−1)p−12 .

Ne segue che p−12 `e pari e quindi p − 1 `e divisibile per 4. In altri termini, p ≡4 1.

(⇐) Supponiamo che p ≡4 1. Dal Teorema di Wilson abbiamo (p − 1)! ≡p −1. Siccome

p−1

2 `e pari, allora possiamo dividere i numeri da 1 a p − 1 in due parti equinumeriche:

i numeri da 1 a p−12 , ed i numeri da p+12 a p − 1. Abbiamo che p − 1 ≡p −1, p − 2 ≡p

−2, . . . ,p+12pp−12 . Quindi

−1 ≡p (p − 1)! ≡p (p − 1

2 )!(−1)p−12 (p − 1

2 )! = (p − 1 2 !)2.

5. Teorema di Eulero

Leonhard Euler, noto in Italia come Eulero, `e stato il pi`u importante matematico del diciottesimo secolo. Eulero `e nato il 15 aprile 1707 a Basilea in Svizzera ed `e morto il 18 settembre 1783 a San Pietroburgo in Russia.

Si definisca la seguente funzione di Eulero:

φ(n) = numero di interi positivi ≤ n che sono relativamente primi con n.

Example 5.1. Se n `e primo, φ(n) = n − 1. Ecco altri esempi: φ(8) = 4 e φ(14) = 6.

Lemma 5.1. n `e primo sse φ(n) = n − 1.

Proof. Se φ(n) = n − 1 allora tutti i numeri da 1 a n − 1 sono relativamente primi con n.

Quindi, n `e primo.

Lemma 5.2. Se p `e primo, allora φ(pk) = pk− pk−1 = pk(1 −1p).

Proof. Si ha: (a, pk) = 1 sse p 6 | a. Vi sono pk−1 interi tra 1 e pk che sono divisibili per p:

p, 2p, 3p, . . . , (pk−1)p.

Quindi l’insieme {1, 2, . . . , pk} contiene pk− pk−1 interi relativamente primi con p.

Per esempio, φ(9) = φ(32) = 32− 31 = 6.

Lemma 5.3. Se a e b sono relativamente primi, allora φ(ab) = φ(a)φ(b).

Proposition 5.1. Sia n > 0. L’insieme degli interi relativamente primi con n `e chiuso rispetto all’operazione di moltiplicazione (modulo n) e costituisce un gruppo moltiplicativo.

(16)

Proof. Sia (a, n) = 1 e (b, n) = 1. Allora si vede facilmente che (ab, n) = 1. Dal Lemma 1.7 esistono interi x, y tali che ax + ny = 1. Ne segue che ax ≡n 1 ed x `e l’inverso di a.

Theorem 5.1. (Teorema di Eulero) Se n `e un intero positivo e (a, n) = 1, allora aφ(n)n 1.

Proof. Siano b1, b2, . . . , bφ(n) i numeri minori di n che sono relativamente primi con n.

Allora ab1, ab2, . . . , abφ(n) sono congruenti a b1, b2, . . . , bφ(n) in qualche ordine. Ne segue che

(ab1) · (ab2) · · · (abφ(n)) = aφ(n)(b1· b2 · · · bφ(n)) ≡nb1 · b2· · · bφ(n)

Siccome ogni bi `e primo con n possiamo dividere per b1 · b2 · · · bφ(n) ed ottenere la conclusione.

Example 5.2. φ(100) = φ(22 · 52) = φ(22)φ(52) = 100(1 − 12)(1 −15) = 40. Dal teorema di Eulero si ricava

3401001.

Quindi, per esempio, 3256 = 36·40+16 = (340)6316100 316. Infine, 316 = (81)4100 (−19)4 = (361)2100 612100 21.

6. Equazioni modulari

Theorem 6.1. La congruenza lineare ax ≡nb ha una soluzione sse (a, n)|b.

Proof. ax ≡n b sse n|(ax − b) sse ∃q(ax − b = nq) sse ∃q(ax − nq = b). Dal Teorema 1.1 di B´ezout otteniamo che ax ≡nb sse (a, n)|b.

Example 6.1. Vogliamo trovare, se esiste, una soluzione all’equazione modulare 124x ≡71 17. Siccome 124 ≡7153, l’equazione si riduce a 53x ≡7117. Calcoliamo il massimo comun divisore di 53 e 71 con il metodo matriciale:

 1 0 71 0 1 53



⇒  1 −1 18 0 1 53



 1 −1 18

−2 3 17



 3 −4 1

−2 3 17



 3 −4 1

−53 71 0



Ne segue che 3 · 71 − 4 · 53 = 1. Siccome 1 divide 17, l’equazione modulare ha soluzione:

17 = 3 · 71 · 17 − 4 · 53 · 17 ≡7153(−4 · 17), da cui si ricava x ≡71 −4 · 17 = −68 ≡71 3.

Theorem 6.2. (Teorema cinese del resto) Siano n1, . . . , nk interi positivi a due a due relativamente primi (i.e., (ni, nj) = 1 per i 6= j). Allora il sistema di congruenze lineari

x ≡ a1 (mod n1) x ≡ a2 (mod n2) . . . .

x ≡ ak (mod nk)

ha una soluzione simultanea che `e unica modulo il prodotto n1× · · · × nk.

(17)

Diamo due differenti dimostrazioni del teorema.

Proof. Per ogni 1 ≤ i ≤ k si definisca

bi = n1. . . ni−1ni+1. . . nk.

Si ha (bi, ni) = 1. Allora la congruenza lineare bixini 1 ha soluzione. Si noti che binj 0 per j 6= i. Allora il numero

x = a1b1x1+ a2b2x2+ · · · + akbkxk

risolve il sistema di congruenze lineari. Per esempio, x ≡n1 a1b1x1 perch´e b2, b3, . . . , bkn1 0. Inoltre, da b1x1n1 1 si ottiene la conclusione x ≡n1 a1. Lo stesso discorso vale per gli altri ni.

Supponiamo che oltre ad x vi sia un’altra soluzione y. Allora si ricava facilmente che x ≡ni y per ogni 1 ≤ i ≤ k. Quindi, n1. . . nk divide x − y (si ricordi che (ni, nj) = 1 per i 6= j). Si conclude x ≡ y mod n1× · · · × nk.

Diamo un’altra prova del Teorema Cinese del resto utilizzando il Teorema di Eulero.

Proof. Per ogni 1 ≤ i ≤ k si definisca bi = n1. . . ni−1ni+1. . . nk. Allora x = a1(bφ(n1 1)) + a2(b2φ(n2)) + · · · + ak(bφ(nk k)) risolve il problema.

Example 6.2. Applichiamo il teorema cinese del resto per risolvere il seguente sistema di congruenze lineari:

x ≡5 2; x ≡7 6; x ≡113.

I numeri 5, 7, 11 sono primi tra loro (a due a due). Quindi, l’unica soluzione modulo 5 × 7 × 11 = 385 `e:

x = 2b1x1+ 6b2x2+ 3b3x3 dove

b1 = 7 · 11 = 77; b2 = 5 · 11 = 55; b3 = 5 · 7 = 35, e x1, x2, x3 sono le soluzioni delle congruenze lineari

77x15 2x15 1; 55x27 6x27 1; 35x311 2x3111.

Si ha x1 = 3, x2 = 6 e x3 = 6. In conclusione,

x = mod385(2 · 77 · 3 + 6 · 55 · 6 + 3 · 35 · 6) = 462 + 1980 + 630 = 3072 ≡385 377.

(18)

7. Applicazione alla Crittografia

Questa sezione `e essenzialmente la Sezione 4.6 del libro Bellissima-Montagna, Matem- atica per l’Informatica, Carrocci Editore, 2008.

Vogliamo inviare un messaggio privato ad un nostro interlocutore. Come prima cosa codifichiamo il messaggio con un numero M tramite una codifica elementare. Supponiamo di avere un alfabeto di n caratteri α1, α2, . . . , αn. Associamo a ciascun carattere un numero in progressione evitando i numeri che nella rappresentazione in base 10 contengono degli zeri. Per ogni i, sia ci il numero che codifica il carattere αi. Allora una stringa αi1. . . αik si codifica con il numero (in base 10) ci10 . . . 0cik. La cifra 0 `e un separatore.

Example 7.1. Sia A = {a, b, c, d, e, f, g, h, i, l, m, n} l’alfabeto. Codifichiamo i caratteri con i numeri successivi 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14. Allora la stringa “cane” `e codifi- cata dal numero 40201406.

Un messaggio scritto con la codifica elementare pu`o essere facilmente decodificato purch´e il nostro interlocutore conosca l’associazione carattere-numero. Questa associ- azione deve essere inviata al nostro interlocutore per mail e pu`o quindi finire nelle mani di un intruso.

Per evitare il problema, criptiamo il messaggio.

Metodo 1 : Concordiamo con ciascuno dei nostri interlocutori una n-upla di numeri a1, . . . , an a due a due relativamente primi. Tali numeri sono conosciuti soltanto allo scrivente ed agli interlocutori. Il Metodo 1 `e basato sul Teorema Cinese del Resto: Sia m = a1× . . . × an. Possiamo supporre che la codifica elementare M del nostro messaggio sia < m, altrimenti spezziamo il messaggio in pi`u parti. Inviamo al nostro interlocutore non il numero M , ma i numeri b1a1 M , b2a2 M ,. . . , bnan M . Chi riceve i numeri b1, . . . , bn pu`o ricostruire M dal teorema Cinese del resto perch´e conosce a1, . . . , an. Un eventuale intruso (che non conosce a1, . . . , an) non potrebbe. Il metodo ha il problema di comunicare i numeri segreti a1, . . . , an ai nostri interlocutori.

Metodo 2 : Questo metodo `e stato inventato nel 1977 da Ron Rivest, Adi Shamir e Leon Adleman ed `e indicato con la sigla RSA.

Ogni utente dispone di una chiave pubblica nota a tutti e una chiave privata. L’utente Pippo si procura quattro numeri distinti

p, q, n, e molto grandi tali che

• p e q sono numeri primi;

• n = p · q;

• e `e relativamente primo con p − 1 e q − 1 (per esempio, e potrebbe essere un numero primo maggiore di p e q).

I numeri p e q costituiscono la chiave privata nota solo all’utente Pippo, mentre i numeri n ed e costituiscono la chiave pubblica, utilizzata per inviare messaggi a Pippo. I numeri n ed e possono, per esempio, comparire nella home page del Signor Pippo.

(19)

In linea di principio, chi riuscisse a scomporre in fattori primi n potrebbe decodificare il messaggio, ma non esistono algoritmi efficienti per la scomposizione in fattori primi.

Il signor X vuole inviare un messaggio in codice a Pippo senza che nessuno lo possa de- codificare. Il signor X considera la codifica elementare M del messaggio. Si pu`o supporre che M < n, altrimenti si spezza il messaggio in tante parti e si spediscono separatamente.

Possiamo supporre che M sia primo con n. Se no, si pu`o renderlo primo con n aggiungendo un simbolo speciale in fondo.

Il signor X cerca nella pagina web di Pippo la chiave pubblica di Pippo, ossia n ed e.

Il signor X calcola

modn(Me).

Per calcolare questo numero si applicano le tecniche che abbiamo imparato nelle sezioni precedenti.

Il numero N < n tale che

N ≡n Me

costituisce il messaggio criptato che il signor X invia per email al signor Pippo. SOLO Pippo pu`o decodificare N per ottenere M , quindi non `e importante se qualcuno intercetta N . Determiniamo ora come Pippo pu`o decodificare N .

Come Pippo decodifica N : Pippo calcola la funzione di Eulero φ(n) = φ(pq) = (p − 1)(q − 1). Poi l’utente Pippo risolve la congruenza modulare ex ≡φ(n) 1. Tale congruenza modulare ammette soluzione perch´e e `e relativamente primo con φ(n) = (p − 1)(q − 1). Indichiamo con d una soluzione di tale equazione modulare. Successivamente Pippo calcola

modn(Nd).

Tale numero `e la codifica elementare M del messaggio criptato. Infatti Ndn(Me)dn Med.

Ora essendo ed ≡φ(n) 1, esiste un numero k tale che ed = 1 + kφ(n). Allora Ndn (Me)dnMedn M1+kφ(n) = M (Mkφ(n)) = M (Mφ(n))knM per il Teorema di Eulero.

Un eventuale intruso per trovare M dovrebbe conoscere φ(n) = (p − 1)(q − 1), che `e im- possibile da calcolare se non si conosce la scomposizione in fattori primi di n. Difficilissima da calcolare.

Riferimenti

Documenti correlati

[4] Sia Π l’insieme dei numeri naturali primi, e sia D 300 l’insieme dei numeri naturali divisori

1 Panca ( in legno con spalliera 4 posti) per bambini 2 Panchette in legno per bambini con spalliera 4 posti 1 Ombrellone tipo ‘bar’ in stoffa + base in graniglia 10

3) Prendi spunto dagli Esempi Messaggi nel terzo foglio, dove trovi una serie di messaggi già compilati che possono essere utilizzati come ulteriore ispirazione.. Elenco

ABITO FORMALE NERO PANTALONE O GONNA SOTTO IL GINOCCHIO PINS NELL’OCCHIELLO LATO SINISTRO. CROCE FIOCCO GRANDE DELL’ORDINE (REGALIA)

Che il Comune di Accumoli intende acquisire manifestazione di interesse da parte di Associazioni iscritte all’albo comunale istituito giusta Delibera di Consiglio

Intende tagliarla in parti uguali prima del loro arrivo ed essere sicura che ciascun nipote riceva la stessa quantità di torta.. Per essere preparata a ciascuna delle tre

[r]

[r]