Capitolo 2
Mcm (minimo comune multiplo)
Questo
programma costituisce il secondo esempio di uso del ciclo while do,
ed è particolarmente interessante per quanto riguarda l'algoritmo
utilizzato per il calcolo del minimo comune multiplo (m.c.m.) di due numeri
interi.
Non è sicuramente l'algoritmo più efficiente per il calcolo del m.c.m.
(quello basato sull'algoritmo di Euclide per il M.C.D. è molto più
rapido), ma è facilmente comprensibile per gli allievi, che risultano più
contenti se lo capiscono.
Illustriamolo con un esempio grafico. Consideriamo i due numeri x=6 e
y=8 e
rappresentiamoli con due bastoncini di lunghezza proporzionata:
Prendiamo due variabili a e b che funzionano da
accumulatori, assegniamo ad a, x=6 e a b, y=8.
Se a=b il m.c.m. è già stato trovato. Altrimenti vediamo fra
a e b chi è il più piccolo (in questo caso a);
aggiungiamogli x=6.
Se a=b il m.c.m. è già stato trovato. Altrimenti vediamo fra
a e b chi è il più piccolo (in questo caso b);
aggiungiamogli y=8.
Continuiamo così. Alla fine, prima o poi, si avrà a=b=m.c.m.=24:
A questo punto vediamo il listato:
procedure TFormMcm.BitBtnCercaClick(Sender: TObject);
var
x, y, a, b: Integer;
begin
x:=StrToInt(EditX.Text);
y:=StrToInt(EditY.Text);
a:=x;
b:=y;
while a<>b do
if a<b then
a:=a+x
else
b:=b+y;
EditMcm.Text:=IntToStr(a);
end;
2.06
- Mcm
|