Lezione del 25 marzo 2007 - Matematica e Informatica

Lezione del 26 marzo 2007
Dimostriamo alcune semplici conseguenze del Teorema di fattorizzazione unica.
Corollario 1
La radice quadrata di un numero primo p è un numero irrazionale.
Dimostrazione. Per assurdo supponiamo l’esistenza di 2 numeri naturali a,b tali che p=(a/b)2=a2/b2,
da cui pb2=a2.
Poiché p>1, si ha a>1. D’altronde anche b>1 (se fosse b=1 si avrebbe p=a2, dunque a sarebbe
divisore non banale del primo p, contraddizione). Essendo a,b numeri naturali >1, per il Teorema di
fattorizzazione unica si possono ciascuno fattorizzare in prodotto di primi:
a = p1p2…..pr
b = q1q2……qs
da cui:
pb2 = pq12q22……qs2 = p12p22……pr2
Per l’unicità della fattorizzazione il numero 2s+1 di fattori del primo membro dovrebbe coincidere
con il numero 2r di fattori del secondo, contraddizione.
Corollario 2 (Euclide).
Esistono infiniti numeri primi.
Dimostrazione. Per assurdo supponiamo finito l’insieme P di tutti i numeri primi e consideriamo il
seguente numero naturale >1:
a=(  p )+1 .
pP
Per il Teorema di fattorizzazione unica, esiste un divisore primo p0P di a (basta scegliere come p0
un qualunque fattore primo nella fattorizzazione di a), da cui, essendo p0  p , si ottiene p01,
pP
contraddizione perché p>1 .
Nota storica: il più grande numero primo conosciuto attualmente è il numero 243.112.609-1 (è uno dei
cosiddetti numeri di Mersenne della forma 2n-1, che studieremo in seguito). Esso ha 12.978.189
cifre (in base 10) ed è stato trovato nell’Agosto 2008 nell’ambito del progetto GIMPS (Great
Internet Mersenne Primes Search: www.mersenne.org).
Problemi:
1) Trovare un algoritmo di complessità polinomiale che, dato in input un naturale a>1, testi se a è
primo o no (test di primalità).
2) Trovare un algoritmo di complessità polinomiale che, dato in input un naturale a>1, calcoli tutti i
suoi fattori primi (algoritmo di fattorizzazione).
Fra i test di primalità distingueremo i test deterministici nei quali, dato in input un numero naturale
n>1, l’algoritmo fornisce come output “n è numero primo” se e solo se n è un numero primo, e i
test probabilistici nei quali vi è la scelta casuale di alcuni elementi utilizzati dall’algoritmo e dove ,
se l’input n è primo, l’output è sempre “n è un numero primo”, ma se n non è primo l’output può
essere egualmente (non correttamente) “n è un numero primo”, e la probabilità di tale errore è
maggiorata da una costante indipendente dall’input e dagli elementi casuali (in questo caso
eseguendo più volte il test, la probabilità che un numero non primo superi erroneamente il test si
può rendere piccola a piacere).
Inoltre fra i test deterministici ne presenteremo alcuni che sono validi solo per numeri naturali
particolari (per esempio i numeri di Fermat della forma 2n+1, oppure i numeri di Mersenne della
forma 2n-1).
Il problema di trovare un test deterministico che risolva il problema 1) è stato risolto solo nel 2003
da Agrawal, Kayal, Saxena nel loro articolo “Primes in P”, con la costruzione di un test
deterministico di primalità avente complessità polinomiale, ormai noto come “test AKS” (di cui ci
occuperemo in seguito). Sono invece ben noti da tempo test probabilistici di primalità di
complessità polinomiale (test di Rabin-Miller etc.).
Invece, come già accennato, il problema 2) attualmente non è stato risolto (e molti matematici sono
convinti che non abbia soluzione).
Distribuzione dei numeri primi
Nella successione dei numeri naturali, i numeri primi sono distribuiti in modo irregolare.
Si possono per esempio costruire intervalli di k naturali consecutivi (con k intero >0 arbitrariamente
grande) che non contengono nessun numero primo: basta considerare i k naturali consecutivi della
forma (k+1)!+j dove j assume i valori 2,3,…,k+1 (ognuno di essi è multiplo di j, perché j(k+1)!,
quindi non è primo).
Se ordiniamo in ordine crescente i numeri primi in una successione p1, p2, ….., pn,….. (quindi p1=2,
p2=3, p3=5, etc..) non esiste una formula algebrica che permetta di calcolare il numero primo p n di
posto n, ma si può dare un maggiorante per l’ordine di grandezza di pn:
Teorema.
Per ogni naturale n si ha pn 2(2
n 1
)
.
11
Dimostrazione:Per induzione su n (IIa forma). Per n=1 si ha p1=2= 2(2 ) . Dato n>1, supponiamo
n 1
la tesi vera per ogni k=1,….,n-1, e dimostriamola per n: se poniamo a=(  p i )+1, per il Teorema di
i 1
Fattorizzazione unica esisterà un primo p divisore di a, e sarà pp1,p2,…,pn-1 (altrimenti si avrebbe
p1, contraddizione), dunque (essendo i primi pi ordinati in modo crescente) :
n 1
n 1
i 1
i 1
pnpa=(  p i )+1( 
 n 1 i 1 
 2 
(2 )
2
)+1= 2 i 1  +1 (per l’ipotesi induttiva).
i -1
n 1
Ma è facile dimostrare (per induzione) che
n -1
2
pn 2(2 -1) +1=
(2
n -1
2
n -1
)
+1
2 (2
2
 2i 1 =2n-1-1 , dunque:
i 1
)
(2 n -1 )
+
2
2
= 2(2
n 1
)
e si ha la tesi.
n 1
n 1
Nota: il maggiorante 2(2 ) per pn è molto “debole”, e in generale 2(2 ) è molto più grande di pn;
41
per esempio per n=4 si ha p4=7 ma 2(2 ) =256.
Nell’ambito dello studio della distribuzione dei numeri primi, può essere interessante valutare il
numero di primi in un certo intervallo [0,x] della semiretta positiva dell’asse reale. Poniamo, per
ogni reale x>0 :
(x) = {p / p è primo, p  x}
(dunque (x) è il numero dei primi non superiori al numero reale x).
Per esempio (22,3)= {p / p è primo, p  22,3}={2,3,5,7,11,13,17,19}=8
Non esistono formule algebriche per il calcolo esatto di (x). Per esempio, usando i computers, si è
verificato che :
(1014) = 3.204.941.750.802
(i valori massimi attualmente calcolati sono intorno a 1022).
Sfruttando il Teorema precedente, possiamo trovare un minorante per (x):
Teorema.
Per ogni reale x>0 si ha (x)log2(log2x)+1.
Dimostrazione:
Sia n=log2(log2x)+1: dunque n è il più grande intero tale che nlog2(log2x)+1, o equivalentemente
n 1
n-1log2(log2x), 2n-1log2x, 2(2 ) x. Nella successione (crescente) dei primi, si ha (per il teorema
precedente) che il numero primo pn di posto n è  2(2
n 1
)
; dunque:
(2n 1 )
p1<p2<….<pn 2
x.
Poiché almeno gli n primi distinti p1, p2, …., pn sono x, si conclude che n(x) e si ha la tesi.
Nota: il minorante log2(log2x)+1 per (x) è molto “debole”, e in generale log2(log2x)+1 è molto
più piccolo di (x); per esempio per x=109 si ha log2(log2x)+1=5 ma (x)5x107.