两非负整数求最大公约数(欧几里德算法)---C/C++
#include<iostream>
using namespace std;
//欧几里德算法求两个非负整数的最大公约数
int getDivisor(int a,int b)
{
int max,min;
max = a;
min = b;
//两数中大数模小数,若结果不为0,则舍弃大数 ,把小数和模运算的结果分出大小来,继续取模运算
//依次递归求解,直到模运算结果为0,则此时的小数就是最大公约数
if(max%min!=0){
if(max%min>min)
return getDivisor(max%min,min);
else
return getDivisor(min,max%min);
}else
return min;
}
int main()
{
//freopen("D:\\algorithm\\testdata.txt","r",stdin);
int a,b,max,min;
int result;
cout<<"请输入两个非负整数 :" ;
cin >> a >> b;
a>b?(max = a,min = b):(max = b,min = a);
result = getDivisor(a,b);
cout<< a << "与" << b << "的最大公约数为 " << result<<endl;
return 0;
}