【C++】欧几里德算法快速求最大公约数

问题描述:如何快速求解2个正整数的最大公约数。

欧几里德(Euclid)算法,也既常说的“辗转相除法”,用于计算2个正整数的最大公约数(Greatest Common Divisor),

计算公式:gcd(a,b) = gcd(b,a mod b);

代码实现如下:

#include <iostream>
using namespace std;

int gcd(int m, int n)
{
	int r = 0;
	while(n!=0)
	{
		r=m%n;
		m=n;
		n=r;
	}
	return m;
}
int main()
{
	int m,n;
	cout<<"请输入2个正整数:"<<endl;
	cin>>m>>n;

	cout<<endl<<"最大公约数为:"<<gcd(m,n)<<endl;
	return 0;
}

运行结果如下:

猜你喜欢

转载自blog.csdn.net/lyq_12/article/details/81261720