lunes, 1 de octubre de 2001

Cálculo del máximo común divisor de tres números enteros positivos. Un ejercicio de programación en C/C++

//-----------------------------------------------------------------
// m.c.d. de tres nombres enters positius 
// 
// Joan Aranès Clua
// data: 17/12/2001
// 
// Aquest programa calcula el m.c.d.{m,n,p}
//-----------------------------------------------------------------

#include <stdio.h>

//declaració de la funció que calcula el m.c.d. de dos n. enters positius:
int mcd(int,int);
// 

void main()
{
    int m,n,p; // variables corresponents a les dades d'entrada

    printf("Introdu\x08Bu tres nombres enters separats per un espai\n");
    scanf("%d %d %d",&m,&n, &p);
    printf("\n\nmcd(%d,%d,%d) = %d\n",m,n,p, mcd(mcd(m,n),p));
}



int mcd(int x,int y)
{

    int reste; // reste i quocient de les divisions
	int dividend,divisor;

	// DIVISIONS SUCCESSIVES
	// primera divisió:
      dividend=(x>y)?x:y;
	divisor=(y<x)?y:x;
	reste=dividend%divisor;

	// per a les divisions següents
	// s'asigna al nou divisor  el valor de l'antic reste
	// fins arribar a una divisió amb reste nul
	// el divisor d'aquesta darrera divisió és el m.c.d.{x,y}

    while(reste>0)
	{
		dividend=divisor;
		divisor=reste;
            reste=dividend%divisor; //         
      }

    return divisor;

}


No hay comentarios:

Publicar un comentario

Gracias por tus comentarios