Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
MASSIMO COMUNE DENOMINATORE (M.C.D)
Calcolo del MASSIMO COMUNE DENOMINATORE (M.C.D) col metodo di Euclide Francesco Piovano MuEta
2
ALGORITMO interi A e B. Studio del problema nel suo dominio specifico:
Realizzazione dell’ algoritmo di Euclide per trovare il MASSIMO COMUNE DENOMINATORE fra due numeri interi A e B. Studio del problema nel suo dominio specifico: Il MASSIMO COMUNE DENOMINATORE fra due numeri interi A e B che non siano uguali a 0 è il più grande numero naturale per il quale possono essere divisi. Per convenzione, MCD(A, 0) = A.
3
I metodo: seguo la definizione
Cerco il passo importante, suggerito dalla definizione di MCD (fissati due numeri interi A e B): Se ((A MOD divisore) = 0) AND ((B MOD divisore) = 0) mcd divisore A parole, se divisore divide pienamente A e B, allora è un potenziale max com. div.
4
Stabilisco quante volte ripetere il test
Stabilisco quante volte ripetere il test. Posso provare con valori di divisore da 1 al minimo tra A e B: l’ultimo trovato sarà il max cercato. Con divisore da 1 a min_AB Se ((A MOD divisore) = 0) AND ((B MOD divisore) = 0) mcd divisore
5
Completo l’algoritmo:
Leggo A e B Se A > B min_AB B Altrimenti min_AB A Con divisore da 1 a min_AB Se ((A MOD divisore) = 0) AND ((B MOD divisore) = 0) mcd divisore Stampo mcd
6
Metodi più efficienti: Euclide
È possibile costruire due algoritmi differenti basandosi sulle considerazioni di Euclide. È possibile utilizzare il: -Metodo per «sottrazioni successive» -Metodo delle «divisioni»
7
Metodo sottrazioni succesive
Siano A e B interi (supponiamo, senza perdere generalità, che sia A > B), e abbiano M come massimo comune divisore. Allora possiamo porre: A = h M e B = k M con h, k che variano in N. Calcolando la differenza tra A e B, si ha: A - B = (h M) - (k M) = (h-k) M Il risultato è che M è fattore anche della differenza, e differenza < A, per cui è possibile ripetere il procedimento sostituendo al minuendo, in questo caso A, il valore ottenuto. Calcoleremo A - B se A > B, altrimenti B - A se A < B fino a quando: A – B = 0 A = B = M.C.D
8
Esempio Calcolare il M.C.D tra A=8 e B=6: 1)A-B=8-6=2 A=2, B=6
2)B-A=6-2=4 A=2, B=4 3)B-A= A=2, B=2 4)A-B= A=B=M.C.D
9
Passo Significativo Occorre individuare il passo significativo:
Perché l’operazione di sottrazione sia lecita in N occorre che il minuendo sia maggiore del sottraendo! Allora dati due numeri interi A e B: Se A>B allora differenza= A-B A differenza Altrimenti differenza=B-A B differenza Il passo significativo deve essere ripetuto fino a quando la differenza = 0, ovvero A = B. A=B=MCD
10
Algoritmo Leggi numero_A e numero_B Finché A ≠ B
Se numero_A > numero_B Calcola differenza_D = numero_A - numero_B Poni differenza_D in numero_A Altrimenti Calcola differenza_D = numero_B - numero_A Poni differenza_D in numero_B Stampa “massimo_comune_denominatore “, numero_A
11
Metodo delle divisioni
Calcoliamo il M.C.D tra A e B interi (per brevità A > B): A = h M e B = k M con h, k che variano in N Calcolando il rapporto tra A e B, si ha: A = q B + r con q = quoziente divisione, r = resto A = q B + r h M = q k M + r Portando al primo membro: (h - q k) M = r Il resto della divisione ha ancora M come fattore (e r < B), per cui è possibile ripetere il procedimento sostituendo al dividendo, in questo caso A, il divisore B e il resto ottenuto diventa il nuovo divisore. Iteriamo il procedimento fino a quando: A = q B + r con r = 0 M.C.D = B* (l’ultimo divisore utilizzato)
12
ALGORITMO Occorre individuare il passo signifivativo:
Calcola numero_A MOD numero_B in resto Poni numero_B in numero_A Poni resto in numero_B Il passo significativo deve essere ripetuto fino a quando il resto ≠ 0 .
13
ALGORITMO Leggi numero_A e numero_B Se numero_A < numero_B
/* scambia A con B, usando una cella di appoggio temp */ Poni numero_B in temp Poni numero_A in numero_B Poni temp in numero_A Poni 1 in resto /* inizializzazione */ Finché resto ≠ 0 Calcola numero_A MOD numero_B in resto Poni numero_B in numero_A Poni resto in numero_B Stampa “massimo_comune_denominatore “, numero_A
14
Raffinamento dell’algoritmo
Si può evitare lo scambio tra A e B quando A < B. Infatti se A < B, il resto della divisione tra A e B dà A, e i passi successivi Poni numero_B in numero_A Poni resto in numero_B effettuano lo scambio.
15
Algoritmo definitivo Leggi numero_A e numero_B
Poni 1 in resto /* inizializzazione */ Finché resto ≠ 0 Calcola numero_A MOD numero_B in resto Poni numero_B in numero_A Poni resto in numero_B Stampa “massimo_comune_denominatore “, numero_A
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.