Euclidean algorithm using subtraction
/*
* Description:
* Finds the greatest common divisor
* Parameters:
* a - the first number
* b - the second number
* Returns:
* gcd - the greatest common divisor of a and b
*/
int GCD(int a, int b)
{
int gcd = 0;
if(a < 0)
{
a = -a;
}
if(b < 0)
{
b = -b;
}
while (a != b)
{
if (a > b)
{
a -= b;
}
else
{
b -= a;
}
}
gcd = a;
return gcd;
}
Euclidean algorithm using division
/*
* Description:
* Finds the greatest common divisor
* Parameters:
* a - the first number
* b - the second number
* Returns:
* gcd - the greatest common divisor of a and b
*/
int GCD(int a, int b)
{
int gcd = 0, r = a%b;
if(a < 0)
{
a = -a;
}
if(b < 0)
{
b = -b;
}
while (r != 0)
{
a = b;
b = r;
r = a%b;
}
gcd = b;
return gcd;
}
Recursive algorithm using subtraction
/*
* Description:
* Finds the greatest common divisor using recursion
* Parameters:
* a - the first number
* b - the second number
* Returns:
* gcd - the greatest common divisor of a and b
*/
int GCD(int a, int b)
{
int gcd = 0;
if(a < 0)
{
a = -a;
}
if(b < 0)
{
b = -b;
}
if (a == b)
{
gcd = a;
return gcd;
}
else if (a > b)
{
return GCD(a-b,b);
}
else
{
return GCD(a,b-a);
}
}
Recursive algorithm using division
/*
* Description:
* Finds the greatest common divisor using recursion
* Parameters:
* a - the first number
* b - the second number
* Returns:
* gcd - the greatest common divisor of a and b
*/
int GCD(int a, int b)
{
int gcd = 0;
if(a < 0)
{
a = -a;
}
if(b < 0)
{
b = -b;
}
if (b == 0)
{
gcd = a;
return gcd;
}
else
{
gcd = GCD(b,a%b);
}
return gcd;
}
Example:#include<stdio.h>
#include<conio.h>
int GCD(int a, int b);
int main(void)
{
int a = 0, b = 0, gcd = 0;
printf("\n Enter the first number: ");
scanf("%d",&a);
printf(" Enter the second number: ");
scanf("%d",&b);
gcd = GCD(a,b);
printf("\n\tThe greatest common divisor is: %d",gcd);
getch();
return 0;
}
Output:
Read about the gcf of an array of integers in this article.

No comments:
Post a Comment