Teoria dei numeri Lezione del giorno 28 aprile 2008 Abbiamo descritto il test di primalità di Fermat: 1) in input il naturale n>1 2) si sceglie casualmente un intero a con 1an-1 (detto base) 3) si calcola d=mcd(a,n); se d>1 si esce con output ”n è composto” 4) se d=1 si calcola la riduzione x=an-1modn e se x1 si esce con output ”n è composto”; altrimenti si esce con output “n è primo” Abbiamo anche già dimostrato che un input n primo supera il test. Osserviamo ora che il test ha complessità polinomiale O(k3) se k=L(n): infatti il passo 2) si effettua con l’algoritmo Euclideo, il passo 3) con l’algoritmo dell’esponenziazione modulare. Un numero composto supera il test quando: nel passo 3) si ha d=mcd(a,n)=1 (ossia se la base casuale a è un numero coprimo con n) e nel passo 4) si ha x=an-1modn=1. Un input composto n che superi il test di Fermat relativamente alla scelta della base a è detto pseudoprimo nella base a (perché n “finge” di essere primo, superando il test per quella scelta di a): per quanto osservato sopra ciò equivale ad affermare che: mcd(a,n)=1, an-1modn=1 (con 1an-1) Esempio. Sia n=341. Sottoponiamo n al test di Fermat con la base a=2. E’ facile verificare che mcd(341,2)=1. Inoltre 2340mod341=1 (come già calcolato nell’esempio di applicazione dell’esponenziazione modulare). Dunque n=341 é pseudoprimo nella base a=2, poiché supera il test per tale scelta di a. Proviamo il test con la base 3 (si ha mcd(341,3)=1): analogamente a quanto fatto nel caso a=2, con l’esponenziazione modulare si ha y1= (123a 8 ) mod341=3 ;y2= (323a 7 ) mod341=9 ;y3= (9 23a 6 ) mod341=243; y4= (24323a 5 ) mod341=56 ;y5= (5623a 4 ) mod341=201 ;y6= (20123a 3 ) mod341=163 ; y7= (16323a 2 ) mod341=254 ;y8= (254 23a 1 ) mod341=67 ;y9= (67 23a 0 ) mod341=56=2340mod341 Poiché 2340mod3411, n=341 non supera il test nella base a=3, dunque é composto: in effetti 341=1131 . Calcoliamo un maggiorante per la probabilità che un numero composto n superi il test di Fermat. Il numero dei valori possibili per la scelta dell’elemento casuale a nel test è (n-1); vediamo come possiamo valutare il numero dei valori a per i quali il test è superato, cioè il numero delle possibili basi in cui n è pseudoprimo: Teorema. Sia n un numero naturale, e supponiamo che esista almeno un naturale b, con 1bn-1, mcd(b,n)=1, tale che bn-1modn1. Allora il numero dei naturali a tali che 1an-1, mcd(a,n)=1, an-1modn=1 (cioè il numero delle basi in cui n è pseudoprimo) è (n)/2. Dimostrazione. Sia S = {aN / 1an-1, mcd(a,n)=1, an-1modn=1}, e sia b come nell’enunciato. Al variare di aS, consideriamo l’insieme T delle riduzioni modulo n dei prodotti ab: T = { (ab)modn / aS } Tali elementi in T, al variare di aS, sono distinti: infatti se per assurdo (ab)modn=(cb)modn con a,cS distinti, si avrebbe nel gruppo moltiplicativo Zn* [a][b]=[c][b], e per la legge di cancellazione [a]=[c], contraddizione perché a,c sono distinti nell’intervallo [1,n-1], quindi le classi di congruenza [a],[c] sono distinte. Dunque S,T hanno stessa cardinalità. Gli elementi di T sono coprimi con n : se t=(ab)modnT, allora in Zn si ha [t]=[a][b] Zn* perché [a],[b] Zn*, dunque mcd(t,n)=1. Inoltre gli elementi di T sono nell’intervallo [1,n-1] (perché riduzioni modulo n). Per ogni t=(ab)modnT, si ha tn-1an-1bn-1bn-1 quindi tn-1modn=bn-1modn1, ossia tS. Dunque S,T sono insiemi disgiunti, entrambi contenuti nell’insieme dei naturali dell’intervallo [1,n-1] coprimi con n: dunque la cardinalità di S è della metà del numero di questi naturali cioè è (n)/2, come si voleva dimostrare. Dal Teorema precedente segue che, se n è un naturale composto, e se soddisfa le ipotesi del Teorema precedente, la probabilità che n superi il test di Fermat (per una scelta casuale della base a) è 1/2. Infatti il numero dei valori a (compresi fra 1 ed n-1) per cui n supera il test è (n)/2(n1)/2, e la probabilità che a sia scelto casualmente fra questi valori è allora [(n-1)/2]/(n-1)=1/2. Ripetendo k volte il test, ogni volta con una scelta casuale indipendente del valore della base a, la probabilità che un numero composto (soddisfacente le ipotesi del Teorema) superi tutte le volte il test di Fermat è 1/2k, quindi tale probabilità può essere resa piccola a piacere (per k sufficientemente grande). Per esempio se k=100 tale probabilità è 1/21001/1030 . Dunque se l’input n supera k volte il test di Fermat, con k abbastanza grande, possiamo affermare che n è primo, con una probabilità di errore molto bassa, eccetto che nel caso in cui n sia un numero composto che non soddisfa le ipotesi del Teorema precedente. Problema: cosa avviene se il numero naturale n composto non soddisfa le ipotesi del Teorema precedente ? Esistono tali numeri n ? Per un naturale n composto che non soddisfa le ipotesi del Teorema precedente si ha che non esiste nessun naturale b, con 1bn-1, mcd(b,n)=1, tale che bn-1modn1, dunque per ogni intero a tale che 1an-1, mcd(a,n)=1, si ha sempre an-1modn=1. Quindi n è pseudoprimo in tutte le basi a tali che 1an-1, mcd(a,n)=1, che sono in numero di (n). Per un tale n, la probabilità che n superi il test è (n)/(n-1) , e se usiamo la formula per calcolare (n) conoscendo i fattori primi distinti p1,p2,…,pr di n, otteniamo che tale probabilità è : (n)/(n-1) (n)/n =(1-1/p1)(1-1/p2)...(1-1/pr) Se i fattori primi pi sono molto grandi, tale probabilità è molto vicina ad 1, quindi molto alta: sottoponendo un tale input n al test di Fermat anche un numero molto grande di volte, è molto probabile che superi sempre il test. Un numero naturale composto n che soddisfa la condizione: per ogni intero a tale che 1an-1, mcd(a,n)=1, si ha sempre an-1modn=1 è detto numero di Carmichael.