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);
        }
    }
  • 相关阅读:
    Navicat远程连接服务器Mysql
    JSP与Servlet之间传值
    JSP获取绝对路径
    PIL的库学习
    科学计算与可视化
    预测球类比赛结果
    预测球类比赛结果
    汉诺塔问题
    有进度条圆周率计算
    turtle学习心得
  • 原文地址:https://www.cnblogs.com/elisa02/p/12784945.html
Copyright © 2011-2022 走看看