ExtensionMethod.NET Home of 819 C#, Visual Basic, F# and Javascript extension methods

LCM

Uses the Euclidean Algorithm to determine the Least Common Multiplier for an array of integers

Source

public static class LeastCommonMultiplierCalc {
    /// <summary>
    /// Uses the Euclidean Algorithm to determine the Least Common Multiplier for an array of integers
    /// </summary>
    /// <param name="values">Array of int values</param>
    /// <returns>The Lease Common Multiplier for values provided</returns>
    public static int LCM(this int[] values) {
        var retval = values[0];
        for (var i = 1; i < values.Length; i++) {
            retval = GCD(retval, values[i]);
        }
        return retval;
    }

    private static int GCD(int val1, int val2) {
        while (val1 != 0 && val2 != 0) {
            if (val1 > val2)
                val1 %= val2;
            else
                val2 %= val1;
        }
        return Math.Max(val1, val2);
    }
}

Example

var numbers = new[] { 21, 63, 91, 119, 154 };
Console.WriteLine(numbers.LCM());

var veryLargeNumbers = new [] {596523235,835132529,477218588,2147483646,2028178999,1073741823};
Console.WriteLine(veryLargeNumbers.LCM());

Author: Jeff Reddy

Submitted on: 1 dec 2011

Language: C#

Type: System.Int32

Views: 3229