关于堆栈溢出,有几个问题讨论如何找到两个值的最大公约数。一个很好的答案显示了一个整洁的 recursive function 可以做到这一点。

但是,如何找到一组超过2个整数的GCD?我似乎找不到这样的例子。

谁能建议最有效的代码来实现此功能?

static int GCD(int[] IntegerSet)
{
    // what goes here?
}

最佳答案

在这里,您有从链接的问题中使用LINQ和GCD方法的代码示例。它使用其他答案中描述的理论算法... GCD(a, b, c) = GCD(GCD(a, b), c)

static int GCD(int[] numbers)
{
    return numbers.Aggregate(GCD);
}

static int GCD(int a, int b)
{
    return b == 0 ? a : GCD(b, a % b);
}

关于c# - 大于2的整数集合中的最大公约数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3635564/

10-13 04:04