您的位置:首页 > 科技 > IT业 > 寻找最小公倍数高效算法

寻找最小公倍数高效算法

2024/10/6 5:59:20 来源:https://blog.csdn.net/Chasingthewinds/article/details/140999590  浏览:    关键词:寻找最小公倍数高效算法

理论基础

理论一:

  • 两个数的最小公倍数等于这两个数的乘积除以它们的最大公约数(GCD)。
  • 即 LCM(a, b) = |a*b| / GCD(a, b)

例如,求12和18的最小公倍数:

  • GCD(12, 18) = 6
  • LCM(12, 18) = |12*18| / 6 = 216 / 6 = 36

 理论二:

辗转相除法,也称为欧几里得算法,是一种用于寻找两个整数最大公约数的高效算法。

假设我们想要找到81和153的最大公约数。

  1. 153除以81,商为1,余数为72。
  2. 然后用81除以72,商为1,余数为9。
  3. 再用72除以9,商为8,余数为0。

这时余数为0,所以在上一步中,9就是153和81的最大公约数。

//C++代码实现
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;int getGCD(int did, int div) {	//辗转相除法while(did % div) {int red = did % div;did = div;div = red;}return div;
}int main(int argc, char** argv) {srand(time(0));int res1 = rand()%1001;int res2 = rand()%801;int gcd = getGCD(res1, res2);cout<<"The GCD is "<<gcd<<endl;int lcm = res1 * res2 / gcd;cout<<"The LCM of "<<res1<<" and "<<res2<<" is "<<lcm;return 0;
}

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com