一.最大公因数的定义
两个数a和b的公有的约数中最大的那个数。
二.算法
1.直接求解法
int gcd(int m,int n)
{
int t = 0;
for(int i = 1; i <= m && i <= n; i++)
{
if (m % i == 0 && n % i == 0)
t = i;
}
return t;
}
这种算法很直接,但算法的复杂度有点大。
2.辗转相除法
辗转相除法又叫欧几里得算法。若我们用(m,n)表示m%n,则辗转相除法为(m, n) →(n, m%n)→……直到( , )=0,则最后的余数为两个数的最大公因数。
int gcd(int m,int n)
{
int t = 0;
while (m % n)
{
t = m % n;
m = n;
n = t;
}
return t;
}
这种算法的复杂度很低,但是只能计算2个数的最大公因数。
3.C++库自带求最大公因数的函数使用
__gcd(m, n);
记得带万能头文件#include<bits/stdc++.h>
最后想要求最小公倍数
根据我们所学的数学知识:最小公倍数=m*n/最大公因数。所以我们可以利用我们上述求出的最大公因数求解