題目:給定兩個正整數,求它們的最大公約數。
#include <iostream>
#include <cstdio>
using namespace std;
/*
利用遞歸的思想求最大公約數
關鍵要理解第一次求最大公約數未果
之后,這時候第一次要求的最大公約數就等於
求b對a%b的最大公約數,於是產生遞歸關系。
*/
int fun(int a,int b)
{
if(a%b==0)
return b;
return fun(b,a%b);
}
int main()
{
int a,b;
cin>>a>>b;
if(a<b) swap(a,b);
cout<<fun(a,b);
return 0;
}
補充:
最大公約數在求分數計算中的應用——通分時,兩個分母相乘除以兩個分母的最大公約數即為最簡結果的分母,分子交叉乘分母之后相加的和除以最大公約數是最簡結果的分子。