关于堆栈溢出,有几个问题讨论如何找到两个值的最大公约数。一个很好的答案显示了一个整洁的 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/