zoukankan      html  css  js  c++  java
  • 求最大公约数-辗转相除法

    给你两个数 a,b,求a和b的最大公约数

    输入:12 18

    输出:6

    思路描述:辗转相除法

    我们假设要求12和18的最大公约数(a为12,b为18)

    辗转相除法步骤:

    因为辗转相除法是要一直重复做的所以我括号里只标注了第一次的值,详细的一步一步的值请看表格

    1、先确认b > a,如果不是两者交换位置,只判断1次,后面不需要再进行判断

    2、t赋值为a % b,(第一次t为12)

    3、a赋值为原来的b(第一次a是18)

    4、b赋值为t(第一次b是12)

    5、如果这时候b的值为0,a为a和b的最大公约数(第一次还不是)

    6、重复步骤2~4,如果步骤5成立了,a为a和b的最大公约数

    a b t
    12 18 12
    18 12 6
    12 6 0
    6 0  

    代码如下,

    long long gcd(int a, int b){
        if(b == 0){
            return a;
        }else{
            return gcd(b,a%b);
        }
    }
  • 相关阅读:
    UML序列图总结
    数据库水平切分的实现原理解析
    oracle imp file data
    putty的设置
    run java jar command
    forex website
    forex tables
    ubuntu set defult jdk
    友情连接
    jstl tag
  • 原文地址:https://www.cnblogs.com/elisa02/p/12784945.html
Copyright © 2011-2022 走看看