最近一个项目要求最大公约数,本想省点力气网上找一个,找了一圈下来都是两个数之间求最大公约数的。
我的要求是多个整数求最大公约数。
于是自己写了一个,不过在效率上也有缺憾,由于从1开始遍历,求公约数的数值较大时,该函数运行效率会变慢。数据个数影响不大。
比如求100000和900000的公约数就不适用,太慢。贴上代码
public int MaxGYS(List<int> Number)
{
int minNumber = Number.Min();
int gys = 1;
for (int i = 1; i <= minNumber; i++)
{
for (int j = 0; j < Number.Count; j++)
{
if (Number[j] % i != 0)
{
break;
}
else
{
if (Number.Count == j + 1)
gys = i;
}
}
}
return gys;
}