Programmazione

  • Materia: Programmazione
  • Visto: 8415
  • Data: 07/05/2008
  • Di: Redazione StudentVille.it

Linguaggio C: funzione M.C.D.

esercizio svolto o teoria

A cura di: Administrator

/*
 *
 * Il massimo comun divisore (MCD) di due interi è l'intero più grande che
 * possa dividere esattamente ognuno dei due numeri. Scrivete una funzione
 * gcd che restituisca il massimo comun divisore di due interi.
 *
 */
#include <stdio.h>
#define EUCLALGO		/* usa l'algoritmo di Euclide */
int gcd(int, int);
int
main(void)
{
	int n1, n2;
	/* legge i due numeri interi */
	printf("Inserire due numeri interi: ");
	scanf("%d%d", &n1, &n2);
	printf("Il massimo comun divisore di %d e %d è %d\n",
	    n1, n2, gcd(n1, n2));
	return 0;
}
#ifndef EUCLALGO
int gcd(int n1, int n2)
{
	int min, mcd, i;
	if (n1 < n2)
		min = n1;
	else
		min = n2;
	i = mcd = 1;
	while (i <= min) {
		if (((n1 % i) == 0) && ((n2 % i) == 0))
			mcd = i;
		i++;
	}
	return mcd;
}
#else
int gcd(int n1, int n2)
{
	/* algoritmo di Euclide */
	int a, b, mcd = 1;
	if (n1 > n2){
		a = n1;
		b = n2;
	} else {
		a = n2;
		b = n1;
	}
	if ((a % b) == 0)
		mcd = b;
	else
		mcd = gcd (b, a % b);
	return mcd;
}
#endif