两非负整数求最大公约数(欧几里德算法)---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; 
}

猜你喜欢

转载自www.cnblogs.com/daemon94011/p/9021952.html