费蜀定理(贝祖定理)证明与应用

定理

对于给定的正整数 a , b a,b a,b,方程 a x + b y = c ax + by = c ax+by=c 有解的充要条件为 c c c gcd(a, b) \text{gcd(a, b)} gcd(a, b) 的整数倍。

证明

  1. 充分性证明:
    gcd ⁡ ( a , b ) = d , a = k 1 × d , b = k 2 × d , c = k 3 × d \gcd(a, b)=d,a=k1×d, b=k2×d, c=k3×d gcd(a,b)=d,a=k1×d,b=k2×d,c=k3×d,其中 k 1 , k 2 k1, k2 k1,k2 互质。
    原等式等价于 k 1 × d × x + k 2 × d × y = k 3 × d k1×d×x + k2×d×y = k3×d k1×d×x+k2×d×y=k3×d
    k 1 × x + k 2 × y = k 3 k1×x + k2×y = k3 k1×x+k2×y=k3,其中 k 1 , k 2 k1, k2 k1,k2 互质。
    那么这个方程等价于模线性方程 k 1 × x ≡ k 3 ( m o d k 2 ) k1×x\equiv k3 \pmod{k2} k1×xk3(modk2)
    e x g c d \rm exgcd exgcd 知,该方程一定有解,那么该方程的一组解即为原方程的解。

  2. 必要性证明:
    采用反证法,假设 c c c 不是 gcd ⁡ ( a , b ) \gcd(a,b) gcd(a,b) 的倍数。
    a = k 1 × d , b = k 2 × d , c = k 3 × d + c ’ a=k1×d, b=k2×d, c=k3×d+c’ a=k1×d,b=k2×d,c=k3×d+c
    那么 k 1 × d × x + k 2 × d × y = k 3 × d + c ’ k1×d×x + k2×d×y = k3×d+c’ k1×d×x+k2×d×y=k3×d+c
    两边同时除以 d d d ,有: k 1 × x + k 2 × y = k 3 + c ’ d k1×x + k2×y = k3 + \dfrac{c’}d k1×x+k2×y=k3+dc
    由于 k 1 , x , k 2 , y , k 3 k1,x,k2,y,k3 k1,x,k2,y,k3 均为整数,而 c ’ d \dfrac{c’}d dc 显然不是整数,故原方程无解。
    这与方程有解矛盾,故 c c c 一定为 gcd ⁡ ( a , b ) \gcd(a,b) gcd(a,b) 的倍数。

推广

对于方程 a x + b y + c z + ⋯ + n m = f ax + by + cz + \dots + nm = f ax+by+cz++nm=f(其中 a , b , c , … , n , f a,b,c,\dots,n,f a,b,c,,n,f 为整数),
它有整数解的充要条件是 f f f gcd ( a , b , c , … , n ) \text{gcd}(a,b,c,\dots,n) gcd(a,b,c,,n) 的整数倍。
证明方法类似原定理的证明,在这里不再赘述。

应用

给定一个序列 { a 1 , a 2 , … , a n } \{a_1,a_2,\dots,a_n\} {a1,a2,,an} ,求一个整数序列 { b 1 , b 2 , … , b n } \{b_1,b_2,\dots,b_n\} {b1,b2,,bn} ,使得 ∑ i = 1 n a i × b i \sum\limits_{i=1}^na_i×b_i i=1nai×bi 的值最小(要求最小值为正数),求这个最小值。

根据裴蜀定理的推广,原式最小值即为 gcd ( a 1 , a 2 , … , a n ) \text{gcd}(a_1,a_2,\dots,a_n) gcd(a1,a2,,an)

例题,套上面那个式子就行啦~

你可能感兴趣的:(算法讲解)