辗转相除法

Posted on 2011-08-11 19:10  continue_n  阅读(228)  评论(0)    收藏  举报

1.定理:(带余除法)若有a,b两个整数,且b>0 ,则存在两个整数q,r 使得 a = b*q + r .
(其中 0 <= r < b , 且q和r是唯一的)

证明: 假设存在 q1和r1 也满足 a = b*q1 + r1 .
      则把两式相减则有 b*(q-q1) + (r-r1) = 0; 化简得有b*(q-q1)  = r1 - r .
      因为q,q1是整数,所以 q-q1 也为整数
      又因为 0 <= r1 < b , -b < -r <= 0 , 则 -b < r1-r < b.
      得到的 -1 < (q-q1) < 1 ,所以 q-q1 = 0 , 即q和r是唯一的。

推论:当 b<0 时,以上一样成立。

辗转相除法求最大公约数 (a,b)=d 表示 a和b的最大公约数为d

2.定理:设有a,b,c三个整数,且a = b*q + c , 则有 (a,b) = (b,c) 即 (a,b) = (b,a%b) .

证明:由 a = b*q + c 得 c = a - b*q
      设d1 = (a,b) , d2 = (b,c) , 则要证 d1 = d2 , 只要证明d1 <= d2 且 d2 <= d1.
      (1)由d1 = (a,b) 得 d1 | (a-b*q) ( d1能整除a和b,则d1能整除a和b的线性组合), 即d1 | c
      因为 d1 | b和c 则有 d1 <= (b,c) = d2 .
      (2)由d2 = (b,c) 得 d2 | b*q+c , 即 d2 | a
      因为 d2 | b和a 所以 d2 <= (a,b) = d1 .
      由(1)(2)可得d1 = d2 .

有了定理2,我们求两个数的最大公约数就很容易了
举个例子 (18,8) = (8,2) = (2,0) = 2 .

3定理:设有a,b两个整数
(1) (a*m,b*m) = (a,b)*m (m是整数)
(2) (a/m,b/m) = (a,b)/m (m是a和b的一个公约数)

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3