问题描述:如何快速求解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;
}
运行结果如下: