美文网首页
欧几里得法证明最大公约数的一点思考

欧几里得法证明最大公约数的一点思考

作者: YongpingZhao | 来源:发表于2017-02-10 16:16 被阅读0次

本文要证明的题目是欧几里得法(碾转相除法)求得的结果是两个数的最大公约数,本文用gcd(a,b)来表示最大公约数。本文讨论的范围是正整数。
本文要证明的结论:

如果q,r是m除以n的商数和余数,即m=qn+r,即r=m%n。则gcd(m,n) = gcd(n,r)。

比如10,15的最大公约数的求解过程:
1.gcd(10,15) => gcd(15,10) => gcd(10,5) => gcd(5,0)。即最大公约数为5。

约定:对于两个自然数a,b。若存在正整数q使得a=qb,则b能被a整除,b是a的因子,a是b的倍数。记作 b | a. 如果c | a,且 c | b.则c是a,b的公约数。
证明本论点前的几点推论:

1.如果a | b,若k是整数,则a | kb。
证明:b= ha,kb=kha,则a | kb。

2.如果a | b,a | c,则a | (b+/-c)
证明:b = ka,c = ha,b+c=ka + ha = (k+h)a.则a | (b+c)。减法同理。

3.如果a | b,b | a,则 a = b。
证明:根据条件可得 b = ka,a = hb。
b = ka 两边同乘以h得: hb = hka,根据hb = a,得hka = a,推出 hk = 1,因为h,k均为自然数,所以h = k = 1.
所以a = b

4.如果a | b,a | c,d = gcd(b, c),则 a | d。
证明:d是最大公约数。根据定义。即 b = md,c = nd。同时gcd (m,n) = 1, 即m,n没有公共因子。如果a为b,c的约数,因为m,n并没有公共因子了,b=ax,c= ay,即md = ax, nd = ay ,因为d是最大公约数,则m,n的最大公约数为1,而x,y的最大公约数则为 k,可以得出 x = km,y = kn,则kma = md ,则ka = d,则 a | d。

下面开始本文的证明:

如果q,r是m除以n的商数和余数,即m = qn+r,即r=m%n。则gcd(m,n) = gcd(n,r)。

a | m, a | n, m = ax, n = ya, qn = qya, m-qn = ax - qya = (x-qy)a,所以a | (m-qn), 即 a | r,又 a | n.根据推论四,a | b。
b | n, b | r, n = gb, r = fb, qn + r = qgb + fb = ( qg + f) b , qn +r = m,所以 b | m, 又 b | n,根据推论四,所以 b | a。
根据推论三,a | b, b | a。得出 a = b。证明完毕。

ruby算法的实现
def gcd(a,b)
  if b == 0
    return a
  end 
  puts "a,b,a % b : #{a}, #{b},#{a%b}"
  gcd(b,a%b)
end

require 'test/unit'
class GcdTest < Test::Unit::TestCase
  def test_gcd
    assert_equal(gcd(10,15), 5)
    assert_equal(gcd(6,8),2)
    assert_equal(gcd(6,12), 6)
  end
end

相关文章

  • 使用欧几里得法求解最大公因数和最小公倍数

    参考 百度文库--欧几里得法 欧几里德算法(最大公约数算法) 欧几里得算法-证明 Code 一句话总结:gcd(a...

  • 欧几里得法证明最大公约数的一点思考

    本文要证明的题目是欧几里得法(碾转相除法)求得的结果是两个数的最大公约数,本文用gcd(a,b)来表示最大公约数。...

  • 算法拾遗

    1.求最大公约数 欧几里得算法(辗转相除法)方式:用除数与余数反复做除,余数为0时,除数为两者最大公约数证明:gc...

  • 数论——欧几里得算法

    欧几里得算法 介绍 【欧几里得算法】又名辗转相除法,是求最大公约数的算法。两个整数的最大公约数是能够同时整除它们的...

  • 扩展欧几里得算法

    资料 欧几里得算法 扩展欧几里得算法 扩展欧几里得算法应用 欧几里得算法 欧几里得算法用于求两个数的最大公约数 证...

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

    1.欧几里得算法 可求两个正整数的最大公约数。计算公式为gcd(a, b) = gcd(b, a % b)。证明该...

  • GCD欧几里得算法 & EXGCD扩展欧几里得算法

    欧几里得算法欧几里得算法 (Euclidean algorithm) 是用来解决最大公约数问题的,通常采用辗转相除...

  • 最大公约数和最小公倍数

    最大公约数 一般用gcd(a,b)来表示a和b的最大公约数,而求解最大公约数常用欧几里得算法(即辗转相除法) 如果...

  • 两个数的最大公约数

    1、遍历查找最大公约数 2、欧几里得算法(递归调用) 从顶至下

  • 欧几里得算法

    欧几里得算法:辗转相除法,用来求两个数的最大公约数。【在数学里面最大公约数是没有负的定义的,所以负数是不谈最大公约...

网友评论

      本文标题:欧几里得法证明最大公约数的一点思考

      本文链接:https://www.haomeiwen.com/subject/nsigittx.html