为防止广告,目前nocow只有登录用户能够创建新页面。如要创建页面请先登录/注册(新用户需要等待1个小时才能正常使用该功能)。

最小公倍数

来自NOCOW
跳转到: 导航, 搜索

目录

[编辑] 定义

最小公倍数(Least Common Multiple,缩写L.C.M.),对于两个整数来说,指该两数共有倍数中最小的一个。计算最小公倍数时,通常会借助最大公约数来辅助计算。(--转自百度百科最小公倍数)

[编辑] 算法

[编辑] 常规算法

lcm(a,b)=a*b/gcd(a,b)

[编辑] 直接算法

由于gcd(a,b)=gcd(a,b mod a)

所以lcm(a,b)=a*b/gcd(a,b)=a*b/gcd(b mod a,a)=lcm(b mod a,a)*b/(b mod a),特别地,当b是a的倍数的时候最小公倍数显然是b。然后递归求解。

此时也可以用a*b/lcm(a,b)求最大公约数。

这种算法的优势是不会出现可能被屏蔽的gcd字样,以及相关的内容,又不会让人难以理解。

缺点是系数比较大,速度会略微的慢一点。

[编辑] 算法实现

Function Euclid(a,b:longint):longint;
 
begin
   if b=0 then exit(a)
   else exit(Euclid(b,a mod b));
end;
 
begin
  readln(a,b);
  c:=Euclid(a,b);
  writeln(a*b div c);
end.

[编辑] 扩展应用

个人工具