int gcd(int a,int b) //最大公约数 迭代法
{
int c=a>b? a:b; //返回大的数
int d=a<b? a:b;
while(d!=0)
{
int e=d;
d=c%d;
c=e;
}
return c;
}
int gcd1(int a, int b) //递归法
{
if(b==0)
return a;
else
return gcd1(b,a%b);
}
int main()
{
int a,b;
cin>>a>>b;
cout<<gcd(a,b)<<endl; //最大公约数
cout<<gcd1(a,b)<<endl; //最大公约数
非递归版本:
void swap(int & a, int & b){
int c = a;
a = b;
b = c;
}
int gcd(int a,int b){
if(0 == a ){
return b;
}
if( 0 == b){
return a;
}
if(a > b){
swap(a,b);
}
int c;
for(c = a % b ; c > 0 ; c = a % b){
a = b;
b = c;
}
return b;
}