01. Es. svolto: MCD

Traccia:

Richiedere all'utente di inserire due o più numeri interi e restituire il MCD.

Strategia:

L'algoritmo di Euclide (cfr. il diagramma di flusso nel par. 5.98.5.2) consente di determinare il MCD tra due numeri.

Conviene implementare una funzione per il calcolo del MCD e richiamare quest'ultima in cascata passando due numeri alla volta.

Svolgimento:


#include <stdio.h>

int EuclideMCD(int m, int n)

{

int appo;

while (m>0)

{

if (n>m)

{

appo=m;

m=n;

n=appo;

}

m=m-n;

}

return n;

}

int main()

{

int x, x1, x2, tmp;

printf("Inserire due o piu' numeri positivi (terminare con 0): ");

scanf("%d %d", &x1, &x2);

if (x1<=0 || x2<=0){

printf("Errore di inserimento dei dati\n");

return -1;

}

tmp=EuclideMCD(x1,x2);

scanf("%d", &x);

while (x>0)

{

tmp=EuclideMCD(tmp, x);

scanf("%d", &x);

}

printf("MCD: %d\n", tmp);

return 0;

}

Notare che nella definizione della funzione EuclideMCD() i parametri m ed m sono modificati.

Queste modifiche non si propagano al di fuori della funzione pertanto le variabili del main non sono alterate a seguito di tali modifiche.