The greatest common denominator, or GCD, between two numbers is the greatest integer that divides both given numbers. Writing a C# program that can calculate the greatest common denominator (GCD) of large numbers quickily would be very useful. The first idea that comes to mind is perhaps to write a for loop to check all numbers that are less than the pair of numbers to find the GCD. However there is a more efficient way using the Euclidean Algorithm.
/// <summary>
/// Returns the Greatest Common Denominator of two integers using
/// the Euclidean Algorithm recursively.
/// </summary>
public int GCDRecursive(int a, int b)
{
//Base cases
if (a == 0)
{
return b;
}
if (b == 0)
{
return a;
}
if (a > b)
{
return GCDRecursive(a % b, b);
}
else
{
return GCDRecursive(a, b % a);
}
}
/// <summary>
/// Returns the Greatest Common Denominator of two integers using
/// the Euclidean Algorithm non-recursively.
/// </summary>
public int GCD(int a, int b)
{
while (a != 0 && b != 0)
{
if (a > b)
{
a %= b;
}
else
{
b %= a;
}
}
if (a == 0)
{
return b;
}
else
{
return a;
}
}