最近在找有关求最大公约数和最小公倍数的有关算法,找来找去都是两个自然数的,没有多个整数的相关的算法,思考了一下,做了一个支持多个的自然数的,直接上代码
//求两个数中的比较大的
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)//辗转相除算法
{
list[i - 1] = min;
list[i] = max % min;
max = GetMax(list[i - 1], list[i]);
min = GetMin(list[i - 1], list[i]);
if (min == 1) //如果已经是1了,就退出循环
break;
}
if (min == 1) //如果已经是1了,就退出循环
break;
}
return GetYueShu(min);
}
//求某一个整数的约数集
public static IList<long> GetYueShu(long n)
{
IList<long> data = new List<long>();
if (n < 1)
return data;
data.Add(1);
if (n == 1)
{
return data;
}
long max = (long)Math.Sqrt(n);
for (long i = 2; i <= max; i++)
if (n % i == 0)
{
data.Add(i);
data.Add(n / i);
}
data.Add(n);
return data.OrderBy(s => s).Distinct().ToList();
}
//求两个整数的最小公倍数
public static long GetMinGongBeiShu(long n1, long n2)
{
if (n1 < n2) //确定a>b
{
n1 = n1 + n2;
n2 = n1 - n2;
n1 = n1 - n2;
}
long product = n1 * n2;//求两个数的乘积
while (n2 != 0)
{
n1 = n1 > n2 ? n1 : n2;//使n1中的数大于n2中的数
long m = n1 % n2;
n1 = n2;
n2 = m;
}
return (product / n1);//最小公倍数
}
/// <summary>
/// 求集合的的最小公倍数
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static long GetMinGongBeiShu( IList<long> data)
{
var t = data[0];
for (int i = 1; i < data.Count; i++)
{
t = GetMinGongBeiShu(t, data[i]);
}
return t;
}
通过以上几个方法就可以计算出来最小公倍数和最大公约数!
在线求多个自然数的最大公约数和最小公倍数 访问地址 公约数_最大公约数_最小公倍数_公约数在线计算查询_最小公倍数在线计算查询_最大公约数在线计算查询_多个整数公约数_多个整数最大公约数_多个整数最小公倍数_多个整数公约数在线计算查询_多个整数最小公倍数在线计算查询_多个整数最大公约数在线计算查询本页适合多个整数的自然数集合中求它们的公约数,最大公约数,最小公倍数,公约数在线计算查询,最小公倍数在线计算查询,最大公约数在线计算查询,多个整数公约数,多个整数最大公约数,多个整数最小公倍数,多个整数公约数在线计算查询,多个整数最小公倍数在线计算查询,多个整数最大公约数在线计算查询并且方便快捷准确,对多个整数求公约数,最小公倍数感兴趣的爱好者提供帮助。
https://www.mz51.vip/YueShu/GongYueShu
https://www.mz51.vip/YueShu/GongYueShu

1920

被折叠的 条评论
为什么被折叠?



