zoukankan      html  css  js  c++  java
  • 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; }
  • 相关阅读:
    Java遍历Map、List、Array
    自签名SSL生成
    oracle_round
    Timestamp_时间戳
    oracle_substr
    eval
    orcale_聚合函数
    oracle_decode
    js_JSON
    sql拼接
  • 原文地址:https://www.cnblogs.com/klitech/p/5763478.html
Copyright © 2011-2022 走看看