在 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.