关于堆栈溢出,有几个问题讨论如何找到两个值的最大公约数。一个很好的答案显示了一个精巧的 递归函数 可以做到这一点。
但是,如何找到一组超过2个整数的GCD?我似乎找不到这样的例子。
谁能建议最有效的代码来实现此功能?
static int GCD(int[] IntegerSet) { // what goes here? }
在这里,您有从链接的问题中使用LINQ和GCD方法的代码示例。它正在使用其他答案中描述的理论算法…GCD(a, b, c) = GCD(GCD(a,b), c)
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); }