一尘不染

大于2的整数集合中的最大公约数

algorithm

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

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


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

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

阅读 320

收藏
2020-07-28

共1个答案

一尘不染

在这里,您有从链接的问题中使用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);
}
2020-07-28