最大公约数与最小公倍数

1、a和b的最大公约数乘以最小公倍数等于a*b

辗转相除法:

原理:

 gcd(a,b)=gcd(b,a mod b) (b>0)

int gcd(int a,int b)
{
   if(b==0)
   return a;
   else
   gcd(b,a%b);
}

求三个数的最小公倍数,两个两个的求。

例题,蓝桥杯核桃的数量

#include<iostream>
#include<cstring>
#include<iomanip>
#include<cmath>
#include<algorithm>
using namespace std;
//求三个数的最小公倍数 
 int gcd(int a,int b)
{
   if(b==0)
   return a;
   else
   gcd(b,a%b);
}
int main()
{
    int p=0,q=0;
    int a,b,c;
    cin>>a>>b>>c;
    if(a>b)
      p=gcd(a,b);
    else
    p=gcd(b,a);
    p=a*b/p;

     if(p>c)
     q=gcd(p,c);  
    else
    q=gcd(c,p);
   
      q=p*c/q;
    cout<<q<<endl;
  
    return 0;
    
}
原文地址:https://www.cnblogs.com/h694879357/p/12244237.html