• Greatest common divisor(gcd)


    欧几里得算法求最大公约数

    • If A = 0 then GCD(A,B)=B, since the GCD(0,B)=B, and we can stop.  
    • If B = 0 then GCD(A,B)=A, since the GCD(A,0)=A, and we can stop.  
    • Write A in quotient remainder form (A = B⋅Q + R)
    • Find GCD(B,R) using the Euclidean Algorithm since GCD(A,B) = GCD(B,R)

    这里Q是正整数.

    Example:

    Find the GCD of 270 and 192

    • A=270, B=192
    • A ≠0
    • B ≠0
    • Use long division to find that 270/192 = 1 with a remainder of 78. We can write this as: 270 = 192 * 1 +78
    • Find GCD(192,78), since GCD(270,192)=GCD(192,78)

        A=192, B=78

    • A ≠0
    • B ≠0
    • Use long division to find that 192/78 = 2 with a remainder of 36. We can write this as:
    • 192 = 78 * 2 + 36
    • Find GCD(78,36), since GCD(192,78)=GCD(78,36)

        A=78, B=36

    • A ≠0
    • B ≠0
    • Use long division to find that 78/36 = 2 with a remainder of 6. We can write this as:
    • 78 = 36 * 2 + 6
    • Find GCD(36,6), since GCD(78,36)=GCD(36,6)

        A=36, B=6

    • A ≠0
    • B ≠0
    • Use long division to find that 36/6 = 6 with a remainder of 0. We can write this as:
    • 36 = 6 * 6 + 0
    • Find GCD(6,0), since GCD(36,6)=GCD(6,0)

    A=6, B=0

    • A ≠0
    • B =0, GCD(6,0)=6

    So we have shown:

    GCD(270,192) = GCD(192,78) = GCD(78,36) = GCD(36,6) = GCD(6,0) = 6

    GCD(270,192) = 6

    应用:

    int gcd(int a, int b) {
        while(b){
    int r = a % b;
    a = b;
    b = r;
    }
    return a; }
  • 相关阅读:
    使用gulp搭建less编译环境
    用原生js封装轮播图
    NodeJS
    npm使用入门
    漫谈JS 的继承方式
    同源策略、跨域解决方案
    脚本学习一(echo、echo off、@、start)
    统计英文文档里每个单词出现的次数
    Dijkstra算法和Floyd算法的正确性证明
    Prim算法和Kruskal算法的正确性证明
  • 原文地址:https://www.cnblogs.com/klitech/p/5763478.html
Copyright © 2020-2023  润新知