Algoritmo di Euclide
MCD (300, 18)
- Vedo se 18 divide perfettamente 300.
- 300 = 18 · 16 + 12.
- Cerca il MCD tra 18 e 12.
MCD (18, 12)
18 = 1 · 12 + 6
= MCD (12, 6) = 6
12 = 2 · 6 + 0
Sono a, b ∈ N+ con a ≥ b
- Repeat
- r := a mod b
- if r = 0 then
- return b
- else
- a := b
- b := r
- endif
- forever
Notiamo che l'iterazione "2" può essere ripetuta.
ai, bi, ri = valori di a, b, r all’iterazione i-ma
(dopo aver ripetuto "i" volte la riga i-ma)
a1 = a, b1 = b, r1 = a mod b
a2 = b1, b2 = r1, r2 = a2 mod b2
ai = bi-1, bi = ri-1, ri = ai mod bi
...
ai-2 bi-2 ri-2
ai-1 bi-1 ri-1
ai bi ri
Algoritmo di Euclide
MCD (300, 18)
- Vedo se 18 divide perfettamente 300.
- 300 = 18 · 16 + 12.
- Cerca il MCD tra 18 e 12.
- MCD (18, 12): 18 = 1 · 12 + 6
- = MCD (12, 6) = 6
- 12 = 2 · 6 + 0
Sono a, b ∈ N+ con a ≥ b
- Repeat
- r := a mod b
- if r = 0 then
- return b /* b è il MCD */
- else
- a := b
- b := r
- endif
- forever
Notiamo che l'iterazione "2" può essere ripetuta.
ai, bi, ri = valori di a, b, r all'iterazione i-ma
(dopo aver ripetuto "i" volte la riga i-ma)
a1 = a, b1 = b, r1 = a mod b
a2 = b1, b2 = r1, r2 = a2 mod b2
ai = bi-1, bi = ri-1, ri = ai mod bi
ai = bi-1 = ri-2
ri = ai mod bi
= ai mod ri-1
...i che l'algoritmo deve terminare
I divisori di ai e bi sono gli stessi dei divisori comuni di ai-1 bi-1.
Ci = divisori comuni ai e bi
Ci-1 = divisori comuni ai-1 e bi-1
Lemma
Lemma: ∀ i ≥ 2, Ci = Ci-1
(⊆) Se c ∈ Ci, ossia c | bi-1 c | ri-1, vogliamo dimostrare c | ai-1.
Abbiamo ai-1 = q bi-1 + ri-1
= q bi + bi
= qmc + nc (∃ m, n)
= (qm+n)c
c | ai-1 => c ∈ Ci-1
∀ i ≥ 2, Ci = Ci-1
(⊇) Se c ∈ Ci-1, ossia c | ai-1 c | ai, vogliamo dimostrare c | ai, c | bi.
ai-1 = q bi-1 + ri-1
= q bi-1 + bi
bi = ai-1 - q bi-1 = m c - qnc
= (m - qn)c (∃ m, n)
c | bi
Esempi di MCD
MCD (88, 55) = 11
= MCD (55, 33)
= MCD (33, 22)
= MCD (22, 11)
= MCD (89, 55) = 1
= MCD (55, 34)
= MCD (34, 21)
= MCD (21, 13)
= MCD (13, 8)
= MCD (8, 5)
= MCD (5, 3)
= MCD (3, 2)
= MCD (2, 1)
88 = 1.55 + 33
55 = 1.33 + 22
33 = 1.22 + 11
22 = 2.11 + 0
89 = 1.55 + 34
55 = 1.34 + 21
34 = 1.21 + 13
21 = 1.13 + 8
13 = 1.8 + 5
8 = 1.5 + 3
5 = 1.3 + 2
3 = 1.2 + 1
2 = 2.1 + 0
ri < ri−1
ri ≤ ri−1 − 1
Dimostrazione
Dimostrazione:
ai bi ri
ai+1 bi+1 ri+1
ai+2 bi+2 ri+2
ri+2 < ri/2
- ri+2 < ri+1
- ri+2 = ri − q ri+1 ≤ ri − ri+1
qi+2 = q bi+2 + ri+2
ri+2 ≤ ri− ri+1
(1) + (2) = 2 ri+2 < ri+1 + ri − ri+1
-
Informatica I - Esercizi algoritmo di Euclide
-
Algoritmo spessore laminato
-
Algoritmo Matlab analisi modale2D
-
Cos’è un algoritmo