C语言:求最大公约数与最小公倍数

最大公约数和最小公倍数

GCD:最大公约数
LCM:最小公倍数
定理:两个数的乘积等于这两个数的最大公约数和最小公倍数乘积
1.GCD(辗转相除法)

#define ll long long
ll GCD(ll a, ll b)
{
    
    
	if(a % b == 0) return b;
	else return GCD(b, a % b);
}

辗转相除法:a, b大小无所谓除过几轮后必会变成a大b小,a%b把整除就是b,没整除就把小数给a,余数(必然比除数b小)给b,一直保持a比b大
2.LCM

#define  long long ll
ll LCM(ll a, ll b)
{
    
    
 	return a * b / GCD(a, b);
}

另一种写法:

#define ll long long
ll LCM(ll a, ll b)
{
    
    
   ll t, m;
   if(a < b)
   {
    
    
   	t = a;
   	a = b;
   	b = t;
   }
   m = a;
   while(m % b)
   m += a;
   return m;

猜你喜欢

转载自blog.csdn.net/m0_51354361/article/details/111409481
今日推荐