首页 > 编程语言 > 详细

两非负整数求最大公约数(欧几里德算法)---C/C++

时间:2018-05-10 22:40:04      阅读:196      评论:0      收藏:0      [点我收藏+]
#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; 
}

 

两非负整数求最大公约数(欧几里德算法)---C/C++

原文:https://www.cnblogs.com/daemon94011/p/9021952.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!