首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 實現最大公約數與最小公倍數計算(歐幾里得算法)

     編輯:關於C++

1. 最大公約數 (GCD) - 輾轉相除法

#include 
using namespace std;

int gcd(int a, int b) {
    int temp;
    while (a % b) {
        temp = b;
        b = a % b;
        a = temp;
    }
    return b;
}

int main() {
    int aa, bb;
    cout << "請輸入第一個數:";
    cin >> aa;
    cout << "請輸入第二個數:";
    cin >> bb;
    cout << "最大公約數:" << gcd(aa, bb) << endl;
    return 0;
}

原理:gcd(a, b) = gcd(b, a % b),直到餘數為 0,當前除數即為最大公約數。

2. 最小公倍數 (LCM)

#include 
using namespace std;

int lcm(int a, int b) {
    if (a < b) swap(a, b);  // 確保 a >= b
    for (int i = 1; i <= b; ++i) {
        if ((a * i) % b == 0) return a * i;
    }
    return a * b;  // 理論上循環必會返回
}

// 更高效公式:lcm(a, b) = a / gcd(a, b) * b
int lcm_fast(int a, int b) {
    return a / gcd(a, b) * b;  // 先除後乘防溢出
}

int main() {
    int aa, bb;
    cout << "請輸入第一個數:";
    cin >> aa;
    cout << "請輸入第二個數:";
    cin >> bb;
    cout << "最小公倍數:" << lcm_fast(aa, bb) << endl;
    return 0;
}

概念釐清

  • 最大公約數:幾個整數共有約數中最大者。例:2、4、6 的 GCD = 2。
  • 最小公倍數:兩整數共有倍數中最小者。例:4 和 6 的 LCM = 12。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved