数学:GCD

求最大公约数利用辗转相除法:

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

求最小公倍数时,利用两数的乘积除以这两个数的最大公约数即可:

long long lcm(long long a,long long b)
{
    long long tmp=a*b;
    tmp=tmp/gcd(a,b);
    return tmp;
}

完整代码如下,输入两个数n和m,输出这两个数的最大公约数和最小公倍数:

#include<iostream>
using namespace std;
long long gcd(long long a,long long b)
{
    if(b==0)
        return a;
    else
        return gcd(b,a%b);
} 
long long lcm(long long a,long long b)
{
    long long tmp=a*b;
    tmp=tmp/gcd(a,b);
    return tmp;
}
int main()
{
    long long n,m;
    cin>>n>>m;
    cout<<gcd(n,m)<<endl<<lcm(n,m);
    return 0;
}
原文地址:https://www.cnblogs.com/aininot260/p/9267398.html