1. 程式人生 > >求兩個數的最大公約數和最小公倍數

求兩個數的最大公約數和最小公倍數

esp long cout gcd urn clas 代碼 () else

求最大公約數利用輾轉相除法:

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; }

求兩個數的最大公約數和最小公倍數