最大公約數gcd與最小公倍數lcm
阿新 • • 發佈:2018-11-19
最大公約數:gcd
最大公倍數:lcm
gcd和lcm的性質:(我覺得主要是第三點性質)
歐幾里得演算法(輾轉相除法):
證明原理:
程式碼:
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a%b);
}
遞迴複雜度:
algorithm 庫函式裡內建好了最大公約數模板
加一個頭檔案#include
直接呼叫___gcd(a,b),返回值就是a和b的最大公約數
__gcd(a,b)
最後放上模板,求gcd和lcm:
#include <iostream> #include <algorithm> using namespace std; /*algorithm 庫函式裡內建好了最大公約數模板 加一個頭檔案#include<algorithm>直接呼叫___gcd(a,b),返回值就是a和b的最大公約數*/ int gcd(int a,int b){ if(b==0){ return a; } return gcd(b,a%b); } int lcm(int a,int b){ return a*b/gcd(a,b); } int main() { int n,m; cin>>n>>m; /*最大公約數2種*/ cout<<gcd(n,m)<<endl; cout<<__gcd(n,m)<<endl; /*最小公倍數2種*/ cout<<lcm(n,m)<<endl; cout<<n*m/__gcd(n,m)<<endl; return 0; }