蛮力法:
#include <iostream>
using namespace std;
int main()
{
int m,n,Max=1;
cout<<"Input m,n:";
cin>>m>>n;
//保证m<n
if(m>n) swap(m,n);
for(int i=2;i<=m;i++){
if(m%i==0 && n%i==0) Max=i;
}
cout<<"The greatest common factor is:"<<Max<<endl;
return 0;
}
结果:
辗转相除法/欧几里得算法(递归实现):
#include <iostream>
using namespace std;
int gcd(int n,int m)
{
int remainder = n%m;
if(remainder==0) return m;
else gcd(m,remainder);
}
int main()
{
int m,n;
cout<<"Input m,n:";
cin>>m>>n;
//保证m<n
if(m>n) swap(m,n);
cout<<"The greatest common factor is:"<<gcd(n,m)<<endl;
return 0;
}
结果: