最小公倍數&&最大公約數

最大公約數就是採用常規的輾轉相除法,也就是歐幾里得算法,其建立的理論依據爲:
gcd(a,b)=gcd(b,a%b),其中一定要保證a>b,這裏數學推導不給出;

gcd函數計算兩個數的公約數,然後轉換爲a%b和b的公約數計算,這也是一種遞歸,目的在於一直減小數字的規模;
最後使得出現0或者最大公約數都是a;
所以有最大公約數的計算代碼:

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

而對於最小公倍數,其本質就是建立在最大公約數,
其常常用函數lcm(a,b)表示;
若d爲a,b的最大共約束,則最小公倍數爲ab/d,爲了防止ab運算出現溢出,所以採用a/db的形式:

int lcm(a,b){
    return a/gcd(a,b)*b;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章