Matematica Discreta Lezione del giorno 20 novembre 2009 L’efficienza dell’algoritmo “ingenuo” illustrato nella lezione precedenza (per testare se un numero naturale a è primo) può essere aumentata con la seguente osservazione: se un numero naturale a>1 non è primo, allora a ha certamente almeno un divisore non banale che sia a (infatti se a non è primo, allora a ha un divisore non banale b1, ba, ed esiste un numero naturale c tale che a=bc, con c1, ca: da ciò si deduce che almeno uno dei divisori b,c è a perché se fosse per assurdo b> a , c> a si avrebbe bc>( a )2=a contraddizione). Dunque per testare se a è primo, basta eseguire le divisioni di a per i valori 2,3,….. che siano a : 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 esempio se l’ordine di grandezza del numero a da testare è circa 1040 (1 seguito da 40 zeri in base 10), l’ordine di grandezza di a è circa 1020, e se un computer potesse eseguire 1 miliardo di divisioni al secondo, il numero di secondi impiegati nell’esecuzione dell’algoritmo sarebbe dell’ordine di grandezza di circa 1011 (oltre 3000 anni…….). Per questo sono stati introdotti test molto più efficienti per verificare se un numero naturale è primo, ma questo è un argomento che esula dagli scopi del nostro corso. Basti osservare che per testare il numero primo più grande attualmente conosciuto (citato nella lezione precedente e con 13 milioni di cifre in base 10) è bastato circa 1 mese di calcoli su un computer dotato di un processore con una velocità di 3 Ghz. 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. Se a è un numero primo e se a é divisore del prodotto di 2 numeri naturali b,c: a (bc) allora a è divisore di almeno uno dei fattori b,c. Dimostrazione: Per assurdo supponiamo che a non sia divisore né di b né di c. Essendo a (bc) esiste un numero naturale t tale che at=bc. Poniamo d=mcd(a,b). Essendo da, db ed essendo a numero primo, si ha d=1 oppure d=a. Ma non può essere d=a (perché d è divisore di b mentre a non lo è) dunque è d=1. Per una proprietà del mcd(a,b), esistono 2 interi relativi x, y tali che d=1=ax+by. Moltiplicando ambo i membri per c e tenendo conto che at=bc si ha: c=acx+bcy=acx+aty=a(cx+ty) e si ottiene ac (contraddizione). Dimostreremo ora un risultato fondamentale dell’aritmetica: 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. Nella prossima lezione dimostreremo l’unicità della fattorizzazione.