在 C++ 中不使用递归或欧几里得算法来查找两个数字的 HCF

c++server side programmingprogramming更新于 2025/3/15 9:37:17

众所周知,使用欧几里得算法可以轻松计算出 HCF 或 GCD。但在这里我们将看到如何在不使用欧几里得算法或任何递归算法的情况下生成 GCD 或 HCF。假设有两个数字,分别是 16 和 24。这两个数字的 GCD 是 8。

这里的方法很简单。如果这两个数字中较大的一个可以被较小的一个整除,那么这就是 HCF,否则从 (较小 / 2) 开始到 1,如果当前元素可以整除这两个数字,那么这就是 HCF。

示例

#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

相关文章