美文网首页
辗转相除法的应用

辗转相除法的应用

作者: MambaHJ | 来源:发表于2018-04-12 22:30 被阅读10次
  • 题目: 设计实现抽象数据结构"有理数",基本操作包括有理数的加减乘除,以及求有理数的分子分母

  • 思路: 设计这个数据结构很简单,但是当时在如何得到有理数的分子分母上楞了一下,后来重新思考了,大概过程:

    1. 用字符串接收一个小数形式的有理数,例如"1.234" 转化为浮点数 1.234
    2. 所有有理数都可以如1.234一样写成1234 / 1000的形式
    3. 12341000的最大公约数为2,然后12341000分别除去它即可分别得到最简分子分母617500
  • 求最大公约数的算法(辗转相除法)
    具体做法:

用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。

代码:

int gcd(int ob1,int ob2){       
    int temp;
    if(ob1 < ob2){  //总是用大数对小数取模    
        temp=ob1;
        ob1=ob2;
        ob2=temp;
    }
    if(!ob2)                 //递归基
          return ob1;
    else    
          return gcd(ob1%ob2,ob2);
}

改写为更简洁的形式:

int gcd(int ob1,int ob2){
     return ob2==0? ob1:gcd(ob2, ob1 % ob2);
 }

相关文章

  • 辗转相除法的应用

    题目: 设计实现抽象数据结构"有理数",基本操作包括有理数的加减乘除,以及求有理数的分子分母 思路: 设计这个数据...

  • 算法-辗转相除法

    算法:辗转相除法(欧几里得算法) GCD递归定理 辗转相除法算法概述 辗转相除法伪代码 辗转相除法代码实现 对于两...

  • 辗转相除法

  • 辗转相除法

    大家好,我是BUG,继算法专辑之后,我现在发出了数学专辑,研究和编程相关的数学问题。讲解之前,别忘了收藏我的编程专...

  • 辗转相除法

    如果b等于0,计算结束,a就是最大公约数 否则,计算a除以b的余数,让a等于b,b等于那个余数 回到第一步

  • 辗转相除法

    求两个数a和b的最大公约数的算法: 1、如果b等于0,计算结束,a就是最大公约数; 2、否则,计算a除以b的余数,...

  • 辗转相除法

    辗转相除法(欧几里得算法)求两个数的最大公约数和最小公倍数?1、最大公约数思路:大数除以小数,如果能够整数,则小数...

  • 最大公约数与最小公倍数:辗转相除法

    已知两个数x和y,求x和y的最大公约数 暴力循环求解: 辗转相除法求解: 辗转相除法递归求解: 理解辗转相除法: ...

  • 求最大公约数

    辗转相除法

  • 辗转相除法求最大公因数 2020-03-12

    今天做了一道题,需要求最大公因数,已经完全把辗转相除法忘记了,特此记录 辗转相除法 辗转相除法,也叫欧几里得算法,...

网友评论

      本文标题:辗转相除法的应用

      本文链接:https://www.haomeiwen.com/subject/iibzcftx.html