最近在找有关求最大公约数和最小公倍数的有关算法,找来找去都是两个自然数的,没有多个整数的相关的算法,思考了一下,做了一个支持多个的自然数的,直接上代码
//求两个数中的比较大的
static long GetMax(long a, long b)
{
return a > b ? a : b;
}
//求两个数中的比较小的
static long GetMin(long a, long b)
{
return a < b ? a : b;
}
/// <summary>
/// 求集合的的公约数
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static IList<long> GetYueShus(IList<long> data)
{
List<long> list = new List<long>(data);
long min = 1, max = 1;
for (int i = 1; i < list.Count; i++)
{
max = GetMax(list[i - 1], list[i]);
min = GetMin(list[i - 1], list[i]);
while (max % min != 0)//辗