21xrx.com
2024-11-25 05:59:56 Monday
登录
文章检索 我的文章 写文章
C++中如何求最大公约数?
2023-07-05 14:57:08 深夜i     --     --
C++ 最大公约数 求解

在C++中求最大公约数,通常可以使用辗转相除法或者欧几里得算法。下面分别介绍这两种方法的实现。

1. 辗转相除法

辗转相除法又称为欧几里得算法,也是比较常用的一种求最大公约数的方法。它的基本思路是,设a和b是两个数,先用a除以b,得到余数r,然后再用b除以r,得到余数r1,一直重复此操作直到余数为0,此时的b就是a和b的最大公约数。

代码实现:


int gcd(int a, int b) {

  if (b == 0)

    return a;

  return gcd(b, a % b);

}

2. 欧几里得算法

欧几里得算法也称为更相减损术,它也是求最大公约数的一种方法。它的基本思路是,设a和b是两个数,先求它们的差值d,然后再求d和较小的数中的最大公约数,一直重复此操作直到d为0,而此时的较小的数就是a和b的最大公约数。

代码实现:


int gcd(int a, int b) {

  if (a == b)

    return a;

  if (a < b)

    return gcd(b-a, a);

  else

    return gcd(a-b, b);

}

综上所述,辗转相除法和欧几里得算法都可以用来求解最大公约数,实现方式也较为简单。但在实际应用中,一般会选择辗转相除法来求解最大公约数,因为它的递归深度较小,效率相对更高。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复