數據結構與算法學習筆記(一)最大公約數與最小公倍數

最大公約數與最小公倍數


一.最大公約數(greatest common divisor)

1.非遞歸實現:

// BigInt是大整數類下篇博客會介紹到,在要求不高情況下可以替換爲int類型
BigInt gcd(const BigInt & a, const BigInt & b) {
    BigInt c= (a > b) ? a : b;
    BigInt result = (a > b) ? b : a;
    c = c % result;
    while (c != 0) {
        BigInt temp = c;
        c = result;
        result = temp;
        c = c % result;
    }
    return result;
}

2.遞歸實現:

BigInt gcd(const BigInt& a, const BigInt& b) {
    return (b == 0) ? a : gcd(b, a % b);
}

二.最小公倍數

一個重要的等式:最大公因數*最小公倍數 = 兩數的乘積

實現:

BigInt lcm(const BigInt& a, const BigInt& b) {
    BigInt result = (a*b) / gcd(a, b);
    return result;
}
發佈了25 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章