1. 程式人生 > >c++---求最大公約數與最小公倍數

c++---求最大公約數與最小公倍數

1.輾轉相除法求最大公約數

輾轉相除法, 又名歐幾里德演算法(Euclidean algorithm),是求最大公約數的一種方法。它的具體做法是:用較小數除較大數,再用出現的餘數(第一餘數)去除除數,再用出現的餘數(第二餘數)去除第一餘數,如此反覆,直到最後餘數是0為止。如果是求兩個數的最大公約數,那麼最後的除數就是這兩個數的最大公約數。

2.求最小公倍數

兩個整數a,b

a*b=(a,b最大公約數)*(a,b最小公倍數)

#include<iostream>
using namespace std;
int gcd(int a,int b)   //greatest common divisor
{
    if(a==0 || b==0)
        return 0;
    int res;
    if(b>a)           //確保a>b
    swap(a,b);
    while(a%b)
    {
        res=a;
        a=b;
        b=res%b;
    }
    return b;
}
int main()
{
    
    int a,b;
    cin>>a>>b;
    cout<<"最大公約數為:"<<gcd(a,b)<<endl;
    cout<<"最小公倍數為:"<<a*b/gcd(a,b)<<endl;   
    return 0;
}