Lezione03.12.08_001 - Matematica e Informatica

Matematica Discreta
Lezione del giorno 3 dicembre 2008
Fattorizzazione in primi
Dimostreremo che i numeri primi sono come i “mattoni” elementari con cui si possono “costruire “
tutti i numeri naturali >1, nel senso che ogni naturale >1 è prodotto di numeri primi e tale
rappresentazione è sotto certi aspetti “unica”. Ricordiamo che per convenzione il termine
“prodotto” si intende al limite anche con 1 solo fattore.
Premettiamo un risultato preliminare sui numeri primi:
Teorema.
Sia n un qualunque numero naturale.
Se p è un numero primo e se p é divisore del prodotto di n numeri naturali:
p (a1a2…..an)
allora p è divisore di almeno uno dei fattori a1a2…..an .
Dimostrazione:
Utilizziamo il principio di induzione, dimostrando che per ogni numero naturale n è vero il
predicato esposto nell’enunciato del Teorema.
Per n=1 l’affermazione è banale.
Supponiamola vera per un valore n=k e dimostriamola per il valore successivo n=k+1.
Supponiamo dunque che p sia divisore del prodotto di k+1 numeri naturali:
p (a1a2…..akak+1) (quindi esiste un numero naturale c tale che pc= a1a2…..akak+1)
e dimostriamo che p è divisore di almeno uno dei fattori a1, a2, ….., ak, ak+1.
Distinguiamo 2 casi.
Primo caso: se p è divisore di ak+1, non vi è niente da dimostrare
Secondo caso: se p non è divisore di ak+1, posto d=mcd(p, ak+1), si ha dp (dunque d=1 oppure d=p),
dak+1 (quindi dp perché p non è divisore di ak+1) e si conclude che 1=d=mcd(p, ak+1). Per una
proprietà del mcd, esistono interi relativi x, y tali che 1=px+ak+1y. Moltiplicando ambo i membri per
il prodotto a1a2…..ak si ottiene a1a2…..ak=pxa1a2…..ak+ a1a2…..akak+1y=p(xa1a2…..ak+cy), ossia p è
divisore del prodotto a1a2…..ak.
Essendo per ipotesi vero per per n=k l’enunciato del teorema, si deduce che p è divisore di almeno
uno dei fattori a1,a2,…..,ak, quindi p è divisore di almeno uno dei fattori a1, a2, ….., ak, ak+1, come si
voleva.
Teorema di fattorizzazione unica. Ogni numero naturale a>1 è fattorizzabile come prodotto di
numeri primi (al limite con 1 solo fattore) e tale fattorizzazione è unica (a meno dell’ordine dei
fattori), nel senso che, se sono date 2 fattorizzazioni dello stesso a in prodotto di numeri primi:
a=p1p2….pr=q1q2…qs (dove tutti i pi e i qj sono numeri primi)
allora:
1) r=s (il numero dei fattori primi nelle 2 fattorizzazioni è uguale)
2) riordinando opportunamente i fattori, si ha p1=q1, p2=q2, …., pr=qr (cioè i fattori coincidono
ordinatamente nelle due fattorizzazioni)
Dimostrazione:
Esistenza della fattorizzazione:
Supponiamo per assurdo che esistano numeri naturali non fattorizzabili nel prodotto di numeri
primi, e costruiamo l’insieme S di tali numeri:
S = {x / xN, x>1, x non é fattorizzabile nel prodotto di numeri primi}
L’insieme non vuoto S, per l’Assioma del minimo, contiene un elemento minimo sS: sarà sN,
s>1, s non fattorizzabile nel prodotto di numeri primi. In particolare s non è un numero primo
(altrimenti s sarebbe fattorizzabile nel prodotto di numeri primi, con 1 solo fattore) quindi s ha un
divisore non banale b, con b1,bs. Esiste allora un naturale c tale che s=bc, e ovviamente anche
c1,cs. In totale si ha 1<b<s, 1<c<s, ed essendo s il minimo in S, si deduce che b,cS, dunque b,c
sono entrambi fattorizzabili nel prodotto di numeri primi, ma allora anche a=bc sarebbe
fattorizzabile nel prodotto di numeri primi, contraddizione.
Unicità della fattorizzazione:
Supponiamo:
a=p1p2….pr=q1q2…qs
con pi, qj numeri primi, e dimostriamo le tesi 1) e 2) dell’enunciato.
Da a=p1(p2….pr)=q1q2…qs segue che p1 è divisore del prodotto q1q2…qs. Per il Teorema
precedente, il numero primo p1 è divisore di qualcuno dei fattori q1,q2,…,qs e, riordinando
opportunamente i fattori, possiamo fare in modo che p1q1. Essendo q1 primo, le possibilità per il
suo divisore p1 sono p1=1 oppure p1=q1. Ma allora p1=q1 (perché per definizione di numero primo si
ha p1>1).
Dividendo ambo i membri dell’eguaglianza per p1 si ottiene l’eguaglianza: p2p3….pr=q2q3…qs, e si
può iterare il ragionamento ottenendo p2=q2 (riordinando di nuovo opportunamente i fattori). La tesi
2) è dunque dimostrata. Dimostriamo ora la tesi 1): se per assurdo la supponessimo falsa, si avrebbe
rs. Supponiamo per esempio che sia r>s (se r<s si ragiona in modo simile): dopo s passi del
precedente procedimento iterativo, dividendo per ps, si avrebbe alla fine l’eguaglianza:
ps+1ps+2….pr=1, contraddizione perché i numeri primi pi sono tutti >1.
Illustriamo 2 conseguenze del Teorema di fattorizzazione unica:
Teorema.
1) I numeri primi sono infiniti.
2) La radice quadrata di un numero primo p è un numero non razionale.
Dimostrazione:
1) Per assurdo supponiamo che l’insieme dei numeri primi contenga un numero finito di elementi, e
sia p1,p2,….,pk l’elenco completo di tutti i numeri primi. Consideriamo il seguente numero naturale
ottenuto sommando 1 al prodotto di tutti i numeri primi:
a=(p1p2….pk)+1 .
Per il Teorema di esistenza della fattorizzazione, a si può scomporre in fattori primi e se p è uno
qualunque dei suoi fattori primi si ha pa, ossia pc=a=(p1p2….pk)+1 dove c è un naturale, da cui
1=pc-(p1p2….pk). Ma p coinciderà con uno dei pi, dunque nel secondo membro dell’eguaglianza
precedente si può mettere in evidenza il fattore comune p, e si conclude che p è divisore di 1,
contraddizione perché p>1.
2) Per assurdo supponiamo p =a/b dove a,b sono naturali. Si ha p=a2/b2, b2p=a2.
Nel caso a=1, si ha b2p=1, contraddizione perché p>1.
Nel caso b=1 si ha p=a2=aa, contraddizione perché il primo p avrebbe un divisore a non banale.
Infine nel caso a>1, b>1, fattorizziamo a, b in prodotto di primi:
a=p1p2….pr , b=q1q2…qs
da cui si avrebbe:
b2p= q1q1q2q2…qsqsp=a2=p1p1p2p2…prpr
e per il Teorema di fattorizzazione unica sarebbe uguale il numero di fattori primi nelle 2
fattorizzazioni, ottenenendo l’eguaglianza 2s+1=2r, contraddizione perché 2s+1 è dispari, 2r è pari.
Dal punto di vista algoritmico nascono 2 problemi:
1) Dato un numero naturale qualunque a, come verificare se a è un numero primo ?
2) Dato un numero naturale qualunque a, come calcolare i fattori primi della fattorizzazione di a ?.
Per il problema 1) abbiamo già introdotto un algoritmo “ingenuo” poco efficiente, che comporta
(nel caso peggiore) a-2 divisioni di a per i numeri 2,3,….,a-1.
L’efficienza di tale algoritmo può essere migliorata con la seguente osservazione: se un numero
naturale a>1 non è primo, allora a ha certamente almeno un divisore non banale che sia
 p (infatti se a non è primo, allora a ha un divisore non banale b1, ba, ed esiste un numero
naturale c tale che a=bc, con c1, ca: se fosse per assurdo b> p , c> p si avrebbe bc>( p )2=p
contraddizione).
Dunque per testare se a è primo, basta eseguire le divisioni di a per i valori 2,3,….. che siano  p :
se nessuno di tali valori è un divisore di a allora si può concludere con certezza che a è primo,
operando un numero di divisioni molto inferiore.
Per esempio, se a=1009, invece di effettuare 1007 divisioni si possono effettuare le 30 divisioni di
a=1009 per i numeri 2,3,…..,31 (tenendo conto che 1009 è circa 31,76), e poiché ognuna di esse
ha resto diverso da 0 si può concludere che a=1009 non ha divisori non banali ed è dunque primo.
Anche questo test “ingenuo” migliorato ha però tempi di calcolo troppo lunghi nel caso di numeri
molto “grandi”: per questo sono stati introdotti test molto più efficienti per verificare se un numero
naturale è primo.
Per quanto riguarda il problema 2), la situazione è molto diversa: anche usando gli algoritmi di
fattorizzazione più veloci attualmente conosciuti, il problema di fattorizzare un dato numero
naturale in prodotto di numeri primi ha una complessità di calcolo molto grande; per esempio la
fattorizzazione di un numero naturale con 600 cifre decimali richiederebbe attualmente 10 17 anni
(mediamente) di calcolo di un computer che possa eseguire 1 miliardo di istruzioni al secondo.