21xrx.com
2024-09-20 05:34:41 Friday
登录
文章检索 我的文章 写文章
C++中求最大公约数的方法
2023-06-30 19:26:00 深夜i     --     --
C++ 最大公约数 方法

最大公约数是指两个或多个数中最大的能够同时整除其的正整数。在C++中,求最大公约数有两种常见的方法:辗转相减和辗转相除。

1. 辗转相减法

辗转相减法是通过不断地减小两个数中较大的数的值,直到两个数相等时停止。此时的数就是它们的最大公约数。

具体实现如下:


int gcd(int a, int b) {

  while (a != b) {

    if (a > b)

      a -= b;

     else

      b -= a;

    

  }

  return a;

}

2. 辗转相除法

辗转相除法是指用两个数中较大的数除以较小的数,将余数作为较小的数,原来的较小的数作为较大的数,不断重复这个过程,直到余数为零。此时的被除数就是它们的最大公约数。

具体实现如下:


int gcd(int a, int b) {

  int r;

  while (b != 0)

    r = a % b;

    a = b;

    b = r;

  

  return a;

}

以上两种求最大公约数的方法都可以有效地解决问题。但是需要注意的是,在使用辗转相减法时需要判断哪个数大,否则会导致算法失效。在使用辗转相除法时,如果除数为零会导致程序崩溃,因此需要先判断除数是否为零。

  
  

评论区

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