最小公倍数和最大公约数求法

最小公倍数和最大公约数求法

1.最大公约数一般欧几里得算法(辗转相除法)

辗转相除法就是拿大的不断去模小的然后当小的为0是大的那个就是最大公约数

--
a=18 b=12
a=12 b=6
a=6 b=0

先用a去%12的到6此a=12,b=6,再用12%6此时b=0,a=12,就的到了结果

#include<iostream>
#include<algorithm>
using namespace std;
int gcd(int x,int y){
   return y? gcd(y,x%y):x;
}
int main(){
   int a,b;
   cin>>a>>b;
   cout<<gcd(a,b);//也可以用stl自带的函数 __gcd(a,b)
   return 0;
}

2.最小公倍数

存在一个数学定理

ab=lcm(a,b)gcd(a,b)

那很明显

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

那求法应该很简单了。

int lcm(a,b){
return a*b/__gcd(a,b)
}
 

 

posted @   silky__player  阅读(342)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示