利用欧几里得算法,gcd(a,b)=gcd(b,a mod b) (a>b)
直到一个数为0,另一个非0即为最大公约数
#include<iostream>
using namespace std;
int gcd(int a,int b)
{
int max=a>b?a:b;
int min=a<b?a:b;
if(min==0) return max;
else return gcd(min,max%min);
}
void main()
{
int a,b;
cout<<"输入两个数,并以空格隔开:"<<endl;
cin>>a>>b;
if(a>=0&&b>=0)
cout<<gcd(a,b);
else cout<<"error"<<endl;
}