假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:
1997 ÷ 615 = 3 (余 152)
615 ÷ 152 = 4(余7)
152 ÷ 7 = 21(余5)
7 ÷ 5 = 1 (余2)
5 ÷ 2 = 2 (余1)
2 ÷ 1 = 2 (余0)
至此,最大公约数为1
以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。
gcd(a,b) = gcd(b,a mod b)
最大公约数
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
//欧几里得算法
ll a,b,c;
//求最大公约数
//ll gcd(ll a,ll b)
//{
// if(b==0)
// return a;
// else
// return gcd(b,a%b);
//}
ll gcd(ll a,ll b)
{
return b == 0 ? a : gcd(b,a%b);
}
最小公倍数
ll lcm(ll a,ll b)
{
return a/gcd(a,b)*b;
}