【学习笔记】 欧几里得算法求最大公约数

预备知识

定理1:令a,b,c为整数,其中a ≠ 0,则
    (i)  如果a | b和a | c,则a | (b + c);
    (ii) 如果a | b,那么对所有整数c都有a | bc;
    (iii)如果a | b,b | c,则a | c。

    下面给出一个 (i) 的直接证明。假定a | b和a | c。则从整除性定义可知,存在整数 s 和 t 满足b = as和c = at。因此

b + c = as + at = a(s + t)

于是,a整除b + c。(ii) 和 (iii) 的证明略。

推论1:如果a,b,c是整数,其中a ≠ 0,使得a | b和a | c,那么当 m 和 n 是整数时有 a | mb + nc。

    采用直接证明法。由定理1中的 (ii) 可知,当 m 和 n 是整数时有 a | mb 和 a | nc。再由定理1中的 (i) 可得a | mb + nc。

定理2:除数算法(division algorithm)。令 a 为整数,d 为正整数。则存在唯一的整数 q 和 r,满足 0 ≤ r < d,使得a = dq + r。

      详细证明请参考《离散数学及其应用》5.2.5节-利用良序性证明

欧几里得算法

我们用gcd(a,b)表示a与b的最大公约数,lcm(a,b)表示a与b的最小公倍数。

1.利用素因子分解求最大公约数和最小公倍数
例:求 168 和 300 的最大公约数和最小公倍数
解:对 168 和 300 做素因子分解:
168 = 2 3 × 3 × 7 , 300 = 2 2 × 3 × 5 168 = 2^{3}\times 3\times 7, 300 = 2^{2}\times 3\times 5 168=23×3×7,300=22×3×5可把它们写成 168 = 2 3 × 3 1 × 5 0 × 7 1 , 300 = 2 2 × 3 1 × 5 2 × 7 0 168 = 2^{3}\times 3^{1}\times5^{0}\times 7^{1}, 300 = 2^{2}\times 3^{1}\times 5^{2}\times7^{0} 168=23×31×50×71,300=22×31×52×70于是 g c d ( 168 , 300 ) = 2 2 × 3 1 × 5 0 × 7 0 = 12 gcd(168,300) = 2^{2}\times 3^{1}\times5^{0}\times 7^{0} = 12 gcd(168,300)=22×31×50×7

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值