参考链接:【C/C++】求最大公约数的三种方法
代码实现如下:
#include<iostream>
using namespace std;
int fun(int a,int b){//从最大往下递减,能整除的直接返回
int res = -1,n = -1;
if(a < b)
n = a;
else
n = b;
for(int i = n;i >= 1;i--)//注意1也是公约数
if(a%i==0 && b%i==0)
{
res = i;
break;
}
return res;
}
int fun_2(int a,int b){//利用公式进行求解
int z = b;//注意z的初始值要赋为b,若一开始a%b == 0时需将b返回
while(a%b != 0)
{
z = a % b;
a = b;
b = z;
}
return z;
}
int main(){
int a,b;
cin>>a>>b;
cout<<fun(a,b)<<endl;
cout<<fun_2(a,b)<<endl;
return 0;
}