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
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).
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.
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.
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.
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
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.
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.
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
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 ⇒ ak ≡nbk.
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).
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);
• 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 ak≡n 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 = 3236 ≡7 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 · 104 ≡5 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
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· 32 ≡7 (−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−1≡p 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 ap ≡p a.
Example 4.1. Vogliamo calcolare 5236 modulo 13. Applicando il Piccolo Teorema di Fermat sappiamo che 512 ≡131. Quindi
5236 = 512·19+8 = (512)1958 ≡1311958 = 58 = (52)4 ≡13(−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)p≡pap+ 1 ≡pa + 1.
perch´e per ipotesi di induzione ap≡pa.
Theorem 4.2. Se p e q sono primi distinti tali che ap ≡q a e aq ≡p a, allora apq ≡pq a.
Proof. Dal Corollario 4.1 si ha (ap)q ≡q ap e (aq)p ≡p aq. Per ipotesi ap ≡q a e aq ≡p a, quindi apq ≡qa e apq ≡p 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· 25 ≡312 · 1 · 1 = 2.
Per il Piccolo Teorema di Fermat si ha anche:
231= 2(210)3 ≡112 · 13 = 2.
Applicando il teorema precedente si ha
211·31≡11·31 2 che si pu`o anche scrivere
2341 ≡3412.
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−2 ≡p 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 aa0 ≡p 1.
Dal fatto che p `e primo segue che a = a0 soltanto per a = 1 e a = p − 1. Infatti la congruenza quadratica a2 ≡p 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.
Theorem 4.5. Sia p un numero primo dispari. La congruenza quadratica x2 ≡p −1 ammette una soluzione modulo p sse p ≡4 1.
Proof. (⇒) Supponiamo che esista a tale che a2 ≡p −1. Ricordiamo che p−1 `e un numero pari. Dal Piccolo Teorema di Fermat abbiamo:
1 ≡p ap−1= (a2)p−12 ≡p (−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+12 ≡p −p−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.
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
340 ≡1001.
Quindi, per esempio, 3256 = 36·40+16 = (340)6316 ≡100 316. Infine, 316 = (81)4 ≡100 (−19)4 = (361)2 ≡100 612 ≡100 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.
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 bixi ≡ni 1 ha soluzione. Si noti che bi ≡nj 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, . . . , bk ≡n1 0. Inoltre, da b1x1 ≡n1 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
77x1 ≡5 2x1 ≡5 1; 55x2 ≡7 6x2 ≡7 1; 35x3 ≡11 2x3 ≡111.
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.
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 b1 ≡a1 M , b2 ≡a2 M ,. . . , bn ≡an 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.
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 Nd ≡n(Me)d ≡n Med.
Ora essendo ed ≡φ(n) 1, esiste un numero k tale che ed = 1 + kφ(n). Allora Nd≡n (Me)d≡nMed ≡n M1+kφ(n) = M (Mkφ(n)) = M (Mφ(n))k ≡nM 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.