预备知识
定理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。因此
于是,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