zoukankan      html  css  js  c++  java
  • 求最大公因数GCD(欧几里得)

    (a,b)表示a,b的最大公因数

    设 a = b*k + r , 则 r = a mod b.

    证明 (a,b) = (b,r) 

    (1).

    设 a = s*u, b = t*u.(表示对于a,b的任意一个公因子u,都有唯一的s,t与之对应。)

    将 a = s*u, b = t*u 代入 a = b*k + r;

    得 s*u = t*u*k + r;

    移项得,r = s*u - t*u*k  = u * (s - t*k);

    可知,对于a,b的任意一个公因子u,都是 r 的因子;

    (2).

    设 b = s*v, r = t*v.(表示对于b,r的任意一个公因子v,都有唯一的s,t与之对应。)

    将 b = s*v, r = t*v 代入 a = b*k + r;

    得 a = s*v*k + t*v = v*(s*k + t);

    可知,对于a,b的任意一个公因子v,都是 a 的因子;

    由(1)知,(a,b)是r的因子

    由(2)知,(b,r)是a的因子

    所以 (a,b) = (b,r)

    由(带余除法)

    a = bq1 + r1

    b = r1q2 + r2

    r1 = r2q3 + r3

    ... = ...   + ...

    rn-2 = rn-1qn + rn

    rn-1 = rnqn+1 + 0

    因为 (a,b) = (b,r1) = (r1,r2) = (r2,r3) =...= (rn-1,rn)=(rn,0)=rn.

    ll _gcd(ll a,ll b)
    {
        if(b == 0)
            return a;
        else
            return _gcd(b,a%b);
    }
  • 相关阅读:
    004 使用文本编辑器
    003 第一个Python程序
    002 Python解释器
    001 安装Python
    000 Python教程
    001 Java环境变量配置
    002 基础语法1
    003 基础语法2
    dede首页调用会员积分和头像代码
    DEDE 会员调用方法
  • 原文地址:https://www.cnblogs.com/LLLAIH/p/10879877.html
Copyright © 2011-2022 走看看