码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-05-10 23:42:27      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:out   algo   turn   font   space   小数   nbsp   str   --   

#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++

标签:out   algo   turn   font   space   小数   nbsp   str   --   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!