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 dp (dunque d=1 oppure d=p), dak+1 (quindi dp 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 l’enunciato del teorema, si deduce che p è divisore di almeno uno dei fattori a1a2…..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 / xN, x>1, x non é fattorizzabile nel prodotto di numeri primi} L’insieme non vuoto S, per l’Assioma del minimo, contiene un elemento minimo sS: sarà sN, 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 b1,bs. Esiste allora un naturale c tale che s=bc, e ovviamente anche c1,cs. In totale si ha 1<b<s, 1<c<s, ed essendo s il minimo in S, si deduce che b,cS, 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 p1q1. 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 rs. 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 pa, 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 b1, ba, ed esiste un numero naturale c tale che a=bc, e 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.