在 C++ 中不使用遞迴或歐幾里得演算法求兩個數的最大公約數


如我們所知,最大公約數或最大公約數可以使用歐幾里得演算法輕鬆計算。但我們將在此探討如何不使用歐幾里得演算法或任何遞迴演算法來生成最大公約數或最大公約數。假設存在兩個數 16 和 24。兩個數的最大公約數為 8。

此方法很簡單。如果這兩個數中較大的那個能被較小的數整除,那麼它就是最大公約數,否則從(較小數 / 2)到 1,如果當前元素可以同時整除這兩個數,那麼它就是最大公約數。

示例

 演示

#include <iostream>
using namespace std;
int gcd(int a, int b) {
   int min_num = min(a, b);
   if (a % min_num == 0 && b % min_num == 0)
   return min_num;
   for (int i = min_num / 2; i >= 2; i--) {
      if (a % i == 0 && b % i == 0)
      return i;
   }
   return 1;
}
int main() {
   int a = 16, b = 24;
   cout << "HCF: "<< gcd(a, b);
}

輸出

HCF: 8

更新於:2019 年 10 月 21 日

589 瀏覽

開啟你的職業生涯

完成課程獲得認證

立即開始
廣告
© . All rights reserved.