21xrx.com
2024-09-17 04:24:36 Tuesday
登录
文章检索 我的文章 写文章
C++代码实现求两数最大公约数
2023-06-29 00:15:23 深夜i     --     --
C++ 求最大公约数 代码

最大公约数是指两个或多个整数共有约数中最大的一个数,大家在中学时已经接触过了,那么这个“最大公约数”怎么用C++语言来实现呢?

其实用C++求两数最大公约数可以使用下面3种算法:

1、暴力枚举法

用循环来进行枚举,判断两个数是否能同时被一个数整除。

2、辗转相除法

将a、b两个数中较大的数除以较小的数,得到商和余数。用余数作为新的b,原来的b作为新的a,新的余数作为新的b,如此反复操作,直到余数为0为止。此时,b就是a、b的最大公约数。

3、更相减损术

首先,将a、b两个数中较大的数减去较小的数,得到一个新的数。再将新的数和较小的数中的较大数进行相减,得到一个新的数。不断重复,直到这两个数相等为止。此时,这两个数就是a、b的最大公约数。

下面是使用辗转相除法算法实现的C++代码:


#include<iostream>

using namespace std;

int gcd(int a,int b)

{

  if(b==0) return a;

  else return gcd(b,a%b);

}

int main()

{

  int a,b;

  cout<<"请输入两个数:";

  cin>>a>>b;

  cout<<"它们的最大公约数是:"<<gcd(a,b);

  return 0;

}

如果输入8和12,则程序会输出4,表示8和12的最大公约数是4。

以上这3种算法各有优缺点,再搭配上各种实际应用条件下的考虑,我们在实际编写中可以灵活使用对应的算法。

  
  

评论区

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