Lezioni di Aritmetica Modulare

Lezioni di Aritmetica Modulare
Antonino Salibra
Università Ca’Foscari Venezia
2 Novembre 2016
Nel seguito scriveremo talvolta a|b al posto di “a divide b”.
Ricordiamo che, 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| è il modulo di b.
0.1. Massimo comun divisore
Il massimo comun divisore MCD(a, b) di due interi a, b non entrambi nulli è il più
grande numero naturale positivo che divide sia a che b. Quindi abbiamo MCD(a, b) =
MCD(|a|, |b|), dove |a| e |b| sono il modulo di a e b rispettivamente. Si estende la definizione
di MCD a tutti gli interi con MCD(0, 0) = 0. Due numeri interi a, b si dicono primi fra
di loro se M CD(a, b) = 1.
Nel seguito supponiamo a, b > 0.
Per calcolare il massimo comun divisore di a e b si considerino i numeri primi p1 , . . . , pn
che sono minore di max(a, b) e poi si definisca MCD(a, b) = pk11 . . . pknn , dove pki i |a e pki i |b,
mentre pki i +1 non divide a oppure non divide b, oppure non divide entrambi.
Un metodo più efficiente di calcolo del massimo comun divisore è l’algoritmo di Euclide.
Lemma 0.1.1. Sia b ≤ a. Se b|a allora MCD(a, b) = b. Se b non divide a allora
MCD(a, b) = MCD(b, r), dove r è il resto della divisione di a per b
Proof. Sia a = bq + r con 0 ≤ r < b. Se d|a e d|b allora d|(a − bq) = r. L’inverso è anche
vero.
Il principio di induzione completa giustifica la seguente definizione ricorsiva:
(
b
se a|b;
MCD(a, b) =
MCD(b, r) se a = bq + r con 0 ≤ r < b.
Example 0.1.1. MCD(134, 36) = MCD(36, 26) = MCD(26, 10) = MCD(10, 6) = MCD(6, 4) =
MCD(4, 2) = 2.
Lemma 0.1.2. Siano a, b 6= 0 numeri interi. Allora esistono interi x e y tali che ax+by =
MCD(a, b).
Proof. Possiamo supporre a, b > 0. La prova è per induzione completa sul valore di b. Se
b = 1, allora MCD(a, 1) = 1 e a0 + 1 = MCD(a, 1). Se b > 1, abbiamo due casi:
• MCD(a, b) = b. Allora a0 + b = MCD(a, b).
1
2
Antonino Salibra
Università Ca’Foscari Venezia
2 Novembre 2016
• MCD(a, b) = MCD(b, r) con a = bq + r e 0 ≤ r < b. Siccome r < b, possiamo
applicare l’ipotesi d’induzione per ottenere due valori x, y tali che
bx + ry = MCD(b, r) = MCD(a, b).
Ma r = a − bq e sostituendo si ha:
bx + (a − bq)y = b(x − qy) + a = MCD(a, b).
Osservazione: Siano a, b 6= 0 interi. Allora l’equazione lineare ax + by = 0 rappresenta la
retta dei vettori (x, y) che sono ortogonali al vettore (a, b). Il Lemma 0.1.2 afferma che la
retta ax + by = MCD(a, b) parallela alla retta ax + by = 0 passa attraverso dei punti che
hanno coordinate intere.
Theorem 0.1.1. (Proprietà di Bézout) Siano a, b, c 6= 0 numeri interi. Allora l’equazione
lineare ax + by = c ha soluzioni intere sse MCD(a, b)|c.
Proof. (⇒) MCD(a, b) divide ogni combinazione lineare di a e b. In particolare, divide la
combinazione lineare ax + by = c.
(⇐) Sia d = MCD(a, b). Per ipotesi c = dq per un opportuno q. Dal Lemma 0.1.2
esistono x e y tali che ax + by = d. Moltiplicando ambo i membri per q si ottiene:
a(xq) + b(yq) = dq = c.
Example 0.1.2. 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 primi
tra loro (cioé MCD(20, 3) = 1) allora le soluzioni intere di 20x + 3y = 1 esistono. Si
vede facilmente che x = −1 e y = 7 è una soluzione di 20x + 3y = 1. La stessa soluzione
risolve 240x + 36y = 12.
Example 0.1.3. Trovare una soluzione intera dell’equazione 120x + 81y = 12. Dividendo
per 3 si ottiene 40x+27y = 4. Siccome 40 e 27 sono primi tra loro (cioé MCD(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 è: x = −8, y = 12. Le stesse soluzioni
funzionano per l’equazione lineare 120x + 81y = 12.
Example 0.1.4. Non esistono soluzioni intere dell’equazione 6x + 2y = 5, perché 2 =
MCD(6, 2) non divide 5.
0.2. L’aritmetica dell’orologio
L’aritmetica modulare (o aritmetica dell’orologio) è 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 per il caso n = 9). Indichiamo con Zn = {0, 1, . . . , n −
1}. Scorriamo l’orologio in senso orario partendo da 0. Una mossa +1 consiste nello
Lezioni di Aritmetica Modulare
3
Figure 1. Aritmetica dell’orologio
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é (n − 1) + 1 = n.
Quindi, contrariamente ai numeri naturali, il numero 0 è 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é 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 è la funzione inversa della funzione determinata dalle mosse +1.
Come possiamo “rappresentare” un intero a nell’orologio? Adottiamo due strategie
diverse se a è positivo oppure negativo. Se a è 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 è negativo, eseguiamo esattamente un numero
di mosse −1 pari a |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 numero
modn (a)
che è il resto della divisione di a per n. Esso è un numero naturale compreso tra 0 e n − 1.
Notazione: Talvolta scriviamo a mod n al posto di modn (a).
4
Antonino Salibra
Università Ca’Foscari Venezia
2 Novembre 2016
Definiamo la somma +n (modulo n) ed il prodotto ∗n (modulo n) sui numeri interi
come segue:
a +n b = modn (a + b);
a ∗n b = modn (ab).
Il risultato della somma e del prodotto è sempre un valore compreso tra 0 e n − 1,
quindi rappresentabile nell’orologio.
Lemma 0.2.1. L’insieme Zn = {0, 1, . . . , n−1} è chiuso rispetto alle operazioni di somma
+n e prodotto ∗n .
Per semplificare i conti, utilizziamo la seguente proposizione
Proposition 0.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 0.2.1. Sia n = 9. Allora mod9 (95 · 37) = mod9 (mod9 (95) + mod9 (37)) =
mod9 (5 · 2) = mod9 (10) = 1. Se non avessimo utilizzato la proposizione avremmo dovuto
calcolare mod9 (3515), che è più difficile specialmente se n è grande.
Se ci restringiamo ad i numeri compresi tra 0 e n − 1, possiamo anche definire la somma
+n come segue (0 ≤ a, b < n):


se b = 0
a
a +n b = a + 1
se b = 1


(a +n (b − 1)) + 1 se b =
6 0, 1.
Example 0.2.2. 7+9 3 = (7+9 2)+1 = ((7+9 1)+1)+1 = ((7+1)+1)+1 = (8+1)+1 =
0 + 1 = 1.
Possiamo definire il prodotto ∗n sui numeri tra 0 e n − 1 utilizzando la somma modulare
+n :


se b = 0
0
a ∗n b = a
se b = 1


(a ∗n (b − 1)) +n a se b 6= 0, 1.
Example 0.2.3. 7 ∗9 3 = (7 ∗9 2) +9 7 = ((7 ∗9 1) +9 7) +9 7 = (7 +9 7) +9 7 = 5 +9 7 = 3.
Nella parte finale abbiamo applicato la definizione della somma +9 per arrivare al risultato
finale 3.
L’aritmetica dell’orologio è correlata alla teoria delle congruenze che introduciamo nella
prossima sezione.
Lezioni di Aritmetica Modulare
5
0.3. Congruenze
Le tacche numerate dell’orologio della sezione precedente sono i rappresentanti delle n
classi di equivalenza di una relazione di equivalenza ≡n definita sugli interi. Nella prossima
definizione definiamo la relazione ≡n .
Definition 0.3.1. Sia n > 0. Diciamo che a, b ∈ Z sono congruenti modulo n, e scriviamo
a ≡ b (mod n) oppure a ≡n b,
se modn (a) = modn (b).
Quindi abbiamo a ≡n b se il resto della divisione di a per n è uguale al resto della
divisione di b per n.
Lemma 0.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 = q1 n + r e
b = q2 n + r con 0 ≤ r < n. Ne segue che b − a è 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 = q1 n + r1 e b = q2 n + 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à è che r1 = r2 .
Lemma 0.3.2. La relazione ≡n è una relazione di equivalenza su Z che è compatibile
rispetto alle operazioni di addizione, moltiplicazione e esponenziazione di interi:
(i) a ≡n b ∧ c ≡n d ⇒ a + c ≡n b + d.
(ii) a ≡n b ∧ c ≡n d ⇒ ac ≡n bd.
(iii) a ≡n b ⇒ ak ≡n bk .
Proof. Sia modn (a) = modn (b) e modn (c) = modn (d).
(i) Sia Dalla Proposizione 0.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 è simile a quella del punto (i).
(iii) La prova è per induzione su k utilizzando (ii).
La relazione ≡n partiziona Z in n classi di equivalenza. Se a è 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).
Le operazioni di somma +n e prodotto ∗n , definite nella sezione precedente, agiscono
sulle classi di equivalenza modulo n tramite i loro rappresentanti.
6
Antonino Salibra
Università Ca’Foscari Venezia
2 Novembre 2016
Figure 2. Aritmetica dell’orologio modulo 4
Proposition 0.3.1. L’insieme Zn = {0, 1, 2, . . . , n − 1} con le operazioni di somma +n e
prodotto ∗n modulo n (come definite nella sezione precedente nel caso n = 9) costituisce
un anello commutativo con unità.
(Zn , +n , 0) è un gruppo commutativo rispetto alla somma:
• Proprietà associativa: (x +n y) +n z = x +n (y +n z);
• Proprietà commutativa: x +n y = y +n x;
• Elemento neutro: x +n 0 = x = 0 +n x;
• Opposto: x +n (−x) = 0 = (−x) +n x.
(Zn , ∗n , 1) è un monoide commutativo rispetto al prodotto:
• Proprietà associativa: (x ∗n y) ∗n z = x ∗n (y ∗n z);
• Proprietà commutativa: x ∗n y = y ∗n x;
• Elemento neutro: x ∗n 1 = x = 1 ∗n x;
Il prodotto distribuisce rispetto alla somma:
• x ∗n (y +n z) = (x ∗n y) +n (x ∗n z).
Nei prossimi due lemmi studiamo proprietà di cancellazione e periodicità delle potenze.
Lemma 0.3.3. Proprietà di cancellazione: ac ≡n bc ∧ MCD(c, n) = 1 ⇒ a ≡n b.
Lezioni di Aritmetica Modulare
7
Proof. Dal Lemma 0.1.2 e dall’ipotesi MCD(c, n) = 1 esistono interi x e y tali che cx+ny =
1. Siccome cx = n(−y) + 1, allora cx ≡n 1. Dal Lemma 0.3.2(ii) si ricava acx ≡n a e
bcx ≡n b. Dall’ipotesi ac ≡n bc segue che acx ≡n bcx. Quindi a ≡n b.
Lemma 0.3.4. Sia n > 0 ed a un intero. La sequenze di potenze modulo n
a0
a1
a2
a3
a4
a5
a6
...
1
2
3
4
5
6
1 modn (a ) modn (a ) modn (a ) modn (a ) modn (a ) modn (a ) . . .
è 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 0.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 è 6. Per esempio 32 ≡ 38 . Infatti 38 = 32 36 ≡7 32 .
Example 0.3.2. Calcoliamo le potenze del 2 modulo 8:
20 21 22 23 24
1 2 4 0 0
Il periodo è 1 a partire da 23 .
Concludiamo la sezione con una serie di esempi che provano l’utilità della Proposizione
0.2.1 e dell’aritmetica modulare.
Example 0.3.3. Vogliamo calcolare qual’è il resto della divisione di 95758 per 5. Siccome
10 è divisibile per 5, si ha che 95758 = 8 + 5 · 10 + 7 · 102 + 5 · 103 + 9 · 104 ≡5 8 ≡5 3.
Example 0.3.4. Vogliamo calcolare qual’è il resto della divisione di 95758 per 7. Siccome
10 è 3 modulo 7, si ha che
95758 =
≡7
≡7
≡7
≡7
8 + 5 · 10 + 7 · 102 + 5 · 103 + 9 · 104
1 + 5 · 3 + 0 · 32 + 5 · 33 + 2 · 34
1 + 15 + 5 · 32 · 3 + 2 · 32 · 32
1+1+5·2·3+2·2·2
2+2+1=5
Example 0.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 0.3.6. Calcoliamo 3128 modulo 7. Siccome 33 = 27 ≡7 −1, allora 3128 =
33·42+2 = (33 )42 · 32 ≡7 (−1)42 · 2 = 2.
8
Antonino Salibra
Università Ca’Foscari Venezia
2 Novembre 2016
0.4. Teoremi di Fermat e di Wilson
Pierre de Fermat, uno dei matematici più importanti dell’ultimo millennio, è nato il 17
agosto 1601 a Beaumont-de-Lomagne (Francia) ed è 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ù importanti.
Theorem 0.4.1. (Piccolo Teorema di Fermat) Se p è 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 è congruente ad un altro modulo p: se na ≡p ma allora dal
Lemma 0.3.3 potremmo cancellare a ed ottenere m ≡p n, che è 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 è divisibile per p, da entrambi i membri otteniamo la
conclusione1 .
Corollary 0.4.1. Se p è primo, allora ap ≡p a.
Example 0.4.1. Vogliamo calcolare 5236 modulo 13. Applicando il Piccolo Teorema di
Fermat sappiamo che 512 ≡13 1. Quindi
5236 = 512·19+8 = (512 )19 58 ≡13 119 58 = 58 = (52 )4 ≡13 (−1)4 = 1
Theorem 0.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 0.4.1 si ha (ap )q ≡q ap e (aq )p ≡p aq . Per ipotesi ap ≡q a e aq ≡p a,
quindi apq ≡q a e apq ≡p a. In conclusione p|apq − a e q|apq − a e quindi pq|apq − a.
1
Un’altra prova del Piccolo Teorema di Fermat si ottiene per induzione su a come segue. La base
dell’induzione a = 1 è ovvia. Supponiamo vero il teorema per a e dimostriamolo per a + 1:
(a + 1)p =
p
X
i=0
Siccome
p!
i!(p−i)!
(
p!
)ai
i!(p − i)!
≡p 0 per ogni 1 ≤ i ≤ p − 1 si ha:
(a + 1)p ≡p ap + 1 ≡p a + 1.
perché per ipotesi di induzione ap ≡p a.
Lezioni di Aritmetica Modulare
9
Example 0.4.2. Consideriamo p = 11 e q = 31 numeri primi. Allora
211 = 2 · 210 = 2 · 25 · 25 ≡31 2 · 1 · 1 = 2.
Per il Piccolo Teorema di Fermat si ha anche:
231 = 2(210 )3 ≡11 2 · 13 = 2.
Applicando il teorema precedente si ha
211·31 ≡11·31 2
che si può anche scrivere
2341 ≡341 2.
Theorem 0.4.3. Se p è un numero primo, allora (Zp , +p , 0, ∗p , 1) è un campo numerico.
Proof. Dalla Proposizione 0.3.1 dobbiamo soltanto provare che ogni elemento a ∈ Zp ha
un inverso. La conclusione segue dal Piccolo Teorema di Fermat perché
aap−2 ≡p 1.
Quindi ap−2 è l’inverso di a.
Theorem 0.4.4. (Teorema di Wilson) Se p è 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 primi tra loro, 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 è primo segue che a = a0 soltanto per a = 1 e a = p − 1. In fatti 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.
10
Antonino Salibra
Università Ca’Foscari Venezia
2 Novembre 2016
0.5. Teorema di Eulero
Leonhard Euler, noto in Italia come Eulero, è stato il più importante matematico del
diciottesimo secolo. Eulero è nato il 15 aprile 1707 a Basilea in Svizzera ed è 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 0.5.1. Se n è primo, φ(n) = n − 1. Ecco altri esempi: φ(8) = 4 e φ(14) = 6.
Lemma 0.5.1. n è primo sse φ(n) = n − 1.
Proof. Se φ(n) = n − 1 allora tutti i numeri da 1 a n − 1 sono primi con n. Quindi, n è
primo.
Lemma 0.5.2. Se p è primo, allora φ(pk ) = pk − pk−1 = pk (1 − p1 ).
Proof. Si ha: MCD(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 0.5.3. Se a e b sono relativamente primi tra loro, allora φ(ab) = φ(a)φ(b).
Proposition 0.5.1. Sia n > 0. L’insieme degli interi relativamente primi con n è chiuso
rispetto all’operazione di moltiplicazione (modulo n) e costituisce un gruppo moltiplicativo.
Proof. Sia MCD(a, n) = 1 e MCD(b, n) = 1. Allora si vede facilmente che MCD(ab, n) =
1. Dal Lemma 0.1.2 esistono interi x, y tali che ax + ny = 1. Ne segue che ax ≡n 1 ed x
è l’inverso di a.
Theorem 0.5.1. (Teorema di Eulero) Se n è un intero positivo e MCD(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) ) ≡n b1 · b2 · · · · · bφ(n)
Siccome ogni bi è primo con n possiamo dividere per b1 · b2 · · · · · bφ(n) ed ottenere la
conclusione.
Example 0.5.2. φ(100) = φ(22 · 52 ) = φ(22 )φ(52 ) = 100(1 − 12 )(1 − 15 ) = 40. Dal teorema
di Eulero si ricava
340 ≡100 1.
Quindi, per esempio, 3256 = 36·40+16 = (340 )6 316 ≡100 316 . Infine, 316 = (81)4 ≡100
(−19)4 = (361)2 ≡100 612 ≡100 21.
Lezioni di Aritmetica Modulare
11
0.6. Equazioni modulari
Theorem 0.6.1. La congruenza lineare ax ≡n b ha una soluzione sse MCD(a, n)|b.
Proof. ax ≡n b sse n|(ax − b) sse ∃q(ax − b = nq) sse ∃q(ax − nq = b). Dal Teorema 0.1.1
di Bézout otteniamo che ax ≡n b sse MCD(a, n)|b.
Theorem 0.6.2. (Teorema cinese del resto) Siano n1 , . . . , nk interi positivi a due a due
primi fra loro (i.e., MCD(ni , nj ) = 1 per i 6= j). Allora il sistema di congruenze lineari
x
x
...
x
≡
≡
...
≡
a1 (mod n1 )
a2 (mod n2 )
...
...
ak (mod nk )
ha una soluzione simultanea che è unica modulo n1 . . . nk .
Proof. Per ogni 1 ≤ i ≤ k si definisca
bi = n1 . . . ni−1 ni+1 . . . nk .
Si ha MCD(bi , ni ) = 1. Allora la congruenza lineare bi xi ≡ni 1 ha soluzione. Si noti che
bi ≡nj 0 per j 6= i. Allora il numero
x = a1 b 1 x 1 + a2 b 2 x 2 + · · · + ak b k x k
risolve il sistema di congruenze lineari. Per esempio, x ≡n1 a1 b1 x1 perché b2 , b3 , . . . , bk ≡n1
0. Inoltre, da b1 x1 ≡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 MCD(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.
Siano n1 , . . . , nk interi positivi a due a due primi fra loro (i.e., MCD(ni , nj ) = 1 per
i 6= j). Allora il sistema di congruenze lineari
x
x
...
x
≡
≡
...
≡
a1 (mod n1 )
a2 (mod n2 )
...
...
ak (mod nk )
ha una soluzione simultanea che è unica modulo n1 . . . nk .
k)
Si consideri bi = (n1n...n
. Allora
i
x = a1 (b1 )φ(n1 ) + a2 (b2 )φ(n2 ) + · · · + ak (bk )φ(nk )
risolve il problema.
12
Antonino Salibra
Università Ca’Foscari Venezia
2 Novembre 2016
0.7. Applicazione alla Crittografia
Questa sezione è essenzialmente la Sezione 4.6 del libro Bellissima-Montagna, Matematica per l’Informatica, Carrocci Editore.
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) ci1 0 . . . 0cik . La cifra 0 è un separatore.
Un messaggio scritto con la codifica elementare può essere facilmente decodificato purché
il nostro interlocutore conosca l’associazione carattere-numero. Questa associazione deve
essere inviata al nostro interlocutore per mail e può quindi finire nelle mani di un intruso.
Per evitare il problema, criptiamo il messaggio. Concordiamo con ciascuno dei nostri
interlocutori una n-upla di numeri a1 , . . . , an a due a due primi fra loro. Tali numeri sono
conosciuti soltanto allo scrivente ed agli interlocutori.
Metodo 1 : Sia A = a1 · . . . · an . Possiamo supporre che la codifica elementare M del
nostro messaggio sia < A, altrimenti spezziamo il messaggio in più 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ò ricostruire M dal teorema Cinese del resto perché 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 è stato inventato nel 1977 da Ron Rivest, Adi Shamir e Leon
Adleman ed è indicato con la sigla RSA.
Ogni utente dispone di una chiave pubblica nota a tutti e una chiave privata. L’utente
U si procura quattro numeri distinti p, q, n, e molto grandi tali che p, q, e sono numeri
primi, n = p · q ed inoltre e è relativamente primo con p − 1 e q − 1.
I numeri p e q costituiscono la chiave privata nota solo all’utente U , mentre i numeri n
ed e costituiscono la chiave pubblica, utilizzata per inviare messaggi ad U .
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 ad U senza che nessuno lo possa decodificare. Il signor X considera la codifica elementare M del messaggio. Si può 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ò renderlo primo con n aggiungendo
un simbolo speciale in fondo.
Il signor X cerca nella pagina web di U la chiave pubblica di U , ossia n ed e. Il signor
X calcola
M e modulo n.
Per calcolare questo numero si applicano le tecniche che abbiamo imparato nelle sezioni
precedenti!
Il numero
N ≡n M e
costituisce il messaggio criptato che il signor X invia per email al signor U . SOLO U può
decodificare N per ottenere M , quindi non è importante se qualcuno intercetta N .
Lezioni di Aritmetica Modulare
13
Come U decodifica N : U calcola la funzione di Eulero φ(n) = φ(pq) = (p − 1)(q − 1).
Poi l’utente U risolve la congruenza modulare ex ≡φ(n) 1. Tale congruenza modulare
ammette soluzione perché e è relativamente primo con φ(n) = (p − 1)(q − 1). Sia x0 una
soluzione di tale equazione modulare. Dopo U calcola
N x0 modulo n.
Tale numero è la codifica elementare M del messaggio criptato. Infatti
N x0 ≡n (M e )x0 ≡n M ex0 .
Ora essendo ex0 ≡φ(n) 1, esiste un numero k tale che ex0 = 1 + kφ(n). Allora
N x0 ≡n (M e )x0 ≡n M ex0 ≡n M 1+kφ(n) = M (M kφ(n) ) = M (M φ(n) )k ≡n M
per il Teorema di Eulero.
Un eventuale intruso per trovare M dovrebbe conoscere φ(n) = (p − 1)(q − 1), che è impossibile da calcolare se non si conosce la scomposizione in fattori primi di n. Difficilissima
da calcolare.