La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

MASSIMO COMUNE DENOMINATORE (M.C.D)

Presentazioni simili


Presentazione sul tema: "MASSIMO COMUNE DENOMINATORE (M.C.D)"— Transcript della presentazione:

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


Scaricare ppt "MASSIMO COMUNE DENOMINATORE (M.C.D)"

Presentazioni simili


Annunci Google