裴蜀定理(贝祖等式)

简介

a , b a,b a,b 是整数,且 g c d ( a , b ) = d gcd(a,b)=d gcd(a,b)=d ,那么对于任意的整数 x x x , y y y , a x + b y ax+by ax+by 都一定是 d d d 的倍数,特别地,一定存在整数 x x x , y y y ,使 a x + b y = d ax+by=d ax+by=d 成立。

推论: a a a , b b b互质的充要条件是存在整数 x x x , y y y ,使 a x + b y = 1 ax+by=1 ax+by=1.

证明

证明一:
d = g c d ( a , b ) d=gcd(a, b) d=gcd(a,b) ,易知 d ∣ a , d ∣ b d|a, d|b da,db .
又整除的性质, ∀ x , y ∈ Z \forall x, y\in Z x,yZ,有 d ∣ ( a x + b y ) d|(ax+by) d(ax+by).
s = m i n { a x + b y , a x + b y ∈ N + }    ⟹    d ∣ s s=min\{ax+by, ax+by\in N+\} \implies d|s s=min{ax+by,ax+byN+}ds
q = ⌊ a s ⌋ q=\lfloor\dfrac{a}{s}\rfloor q=sa , r = a m o d    s = a − q × s = ( 1 − q x ) a + ( − q y ) b r = a\mod s = a - q\times s =(1-qx)a + (-qy)b r=amods=aq×s=(1qx)a+(qy)b ,则 r r r 也为关于 a a a b b b 的一个线性组合.
因为 s s s 是最小正整数解, 0 ≤ r &lt; s &ThickSpace; ⟹ &ThickSpace; r = 0 0\le r\lt s\implies r=0 0r<sr=0,则 s ∣ a s|a sa.
同理 s ∣ b s|b sb,可得 s ∣ d s|d sd.

证明二:
(1)若 b = 0 &ThickSpace; ⟹ &ThickSpace; g c d ( a , b ) = a b=0 \implies gcd(a, b) = a b=0gcd(a,b)=a,定理显然成立
(2)若 b b b &ThinSpace; / = \mathrlap{\,/}{=} /= 0 0 0 d = g c d ( a , b ) d=gcd(a,b) d=gcd(a,b) ,对 a x + b y = d ax+by=d ax+by=d 两边同时除以 d &ThickSpace; ⟹ &ThickSpace; a 1 x + b 1 y = 1 d \implies a_1x + b_1y = 1 da1x+b1y=1 ,其中 g c d ( a 1 , b 1 ) = 1 gcd(a_1, b_1) = 1 gcd(a1,b1)=1 .
由欧几里得算法可知 g c d ( a , b ) = g c d ( b , a % b ) gcd(a, b) = gcd(b, a\%b) gcd(a,b)=gcd(b,a%b) ,则 a 1 = b 1 x 1 + r 1 , a 1 % b 1 = r 1 , { r i ∈ Z ∣ 1 ≤ i } a_1=b_1x_1+r_1, a_1\%b_1=r_1, \{r_i\in Z | 1\le i \} a1=b1x1+r1,a1%b1=r1,{riZ1i},一直递推下去~~~

无意义的次序~~~ab
1 a 1 = b 1 x 1 + r 1 a_1=b_1x_1+r_1 a1=b1x1+r1 b 1 = r 1 x 2 + r 2 b_1=r_1x_2+r_2 b1=r1x2+r2
2 b 1 = r 1 x 2 + r 2 b_1=r_1x_2+r_2 b1=r1x2+r2 r 1 = a 1 % b 1 = r 2 x 3 + r 3 r_1=a_1\%b_1=r_2x_3+r_3 r1=a1%b1=r2x3+r3
3 r 1 = r 2 x 3 + r 3 r_1=r_2x_3+r_3 r1=r2x3+r3 r 2 = b 1 % r 1 = r 3 x 4 + r 4 r_2=b_1\%r_1=r_3x_4+r_4 r2=b1%r1=r3x4+r4
⋮ \vdots ⋮ \vdots ⋮ \vdots
n-1 r n − 3 = r n − 2 x n − 1 + r n − 1 r_{n-3}=r_{n-2}x_{n-1}+r_{n-1} rn3=rn2xn1+rn1 r n − 2 = r n − 4 % r n − 3 = r n − 1 x n + r n r_{n-2}=r_{n-4}\%r_{n-3}=r_{n-1}x_n+r_n rn2=rn4%rn3=rn1xn+rn
n r n − 2 = r n − 1 x n + r n r_{n-2}=r_{n-1}x_n+r_n rn2=rn1xn+rn r n − 1 = r n − 3 % r n − 2 = r n x n + 1 + r n + 1 r_{n-1}=r_{n-3}\%r_{n-2}=r_nx_{n+1}+r_{n+1} rn1=rn3%rn2=rnxn+1+rn+1
n+1 r n − 1 = r n x n + 1 + r n + 1 r_{n-1}=r_nx_{n+1}+r_{n+1} rn1=rnxn+1+rn+1 r n = r n − 2 % r n − 1 = r n + 1 x n + 2 + r n + 2 r_n=r_{n-2}\%r_{n-1}=r_{n+1}x_{n+2}+r_{n+2} rn=rn2%rn1=rn+1xn+2+rn+2
n+2 r n = r n + 1 x n + 2 + r n + 2 r_n=r_{n+1}x_{n+2}+r_{n+2} rn=rn+1xn+2+rn+2 r n + 1 = … r_{n+1}=\dots rn+1=(懒得写了)

现在,我们设 r n + 1 = 0 r_{n+1}=0 rn+1=0,那么 r n = 1 &ThickSpace; ⟹ &ThickSpace; r n − 2 = r n − 1 x n + 1 &ThickSpace; ⟹ &ThickSpace; r n − 2 − r n − 1 x n = 1 r_n = 1\implies r_{n-2}=r_{n-1}x_{n}+1\implies r_{n-2}-r_{n-1}x_n=1 rn=1rn2=rn1xn+1rn2rn1xn=1.
由上表第n-1个a的表达式得 r n − 1 = r n − 3 − r n − 2 x n − 2 r_{n-1}=r_{n-3}-r_{n-2}x_{n-2} rn1=rn3rn2xn2,将此式的 r n − 1 r_{n-1} rn1 带入上式得 r n − 2 − ( r n − 3 − r n − 2 x n − 2 ) x n = 1 r_{n-2}-(r_{n-3}-r_{n-2}x_{n-2})x_n=1 rn2(rn3rn2xn2)xn=1.
我们设 m 1 = − x n , n 1 = 1 + x n − 1 x n &ThickSpace; ⟹ &ThickSpace; m 1 r n − 3 + n 1 r n − 2 = 1 m_1=-x_n, n_1=1+x_{n-1}x_n \implies m_1r_{n-3} + n_1r_{n-2} = 1 m1=xn,n1=1+xn1xnm1rn3+n1rn2=1,由于 ∀ x i ∈ Z \forall x_i \in Z xiZ,显然 m 1 , n 1 ∈ Z m_1, n_1 \in Z m1,n1Z. 然后我们暴力推一下:

m 0 r n − 2 + n 0 r n − 1 = 1 ( m 0 = − x n , n 0 = 1 ) m_0r_{n-2}+n_0r_{n-1} = 1(m_0=-x_n, n_0=1) m0rn2+n0rn1=1(m0=xn,n0=1)
m 1 r n − 3 + n 1 r n − 2 = 1 m_1r_{n-3} + n_1r_{n-2} = 1 m1rn3+n1rn2=1
m 2 r n − 4 + n 2 r n − 3 = 1 m_2r_{n-4}+n_2r_{n-3} = 1 m2rn4+n2rn3=1
m 3 r n − 5 + n 3 r n − 4 = 1 m_3r_{n-5}+n_3r_{n-4} = 1 m3rn5+n3rn4=1
⋮ \vdots
m n − 2 r 1 + n n − 2 r 2 = 1 m_{n-2}r_1+n_{n-2}r_2=1 mn2r1+nn2r2=1
m n − 1 b 1 + n n − 1 r 1 = 1 m_{n-1}b_1+n_{n-1}r_1=1 mn1b1+nn1r1=1
m n a 1 + n n b 1 = 1 m_na_1+n_nb_1=1 mna1+nnb1=1

显然, m n , n n ∈ Z &ThickSpace; ⟹ &ThickSpace; a 1 x + b 1 y = 1 m_n,n_n \in Z\implies a_1x+b_1y=1 mn,nnZa1x+b1y=1有整数解
&ThickSpace; ⟹ &ThickSpace; a x + b y = d \implies ax+by=d ax+by=d有整数解.

推论证明

充分性:
由证明二可得.

必要性:
假设 k = g c d ( a , b ) k=gcd(a, b) k=gcd(a,b),且 k &gt; 1 k \gt 1 k>1 a , b a, b a,b不互质).
a = m k , b = n k &ThickSpace; ⟹ &ThickSpace; m k x + n k y = 1 a = mk, b = nk\implies mkx+nky=1 a=mk,b=nkmkx+nky=1
等式两边同时除以 k k k
m x + n y = 1 k ( k &gt; 1 ) mx+ny=\dfrac{1}{k}(k \gt 1) mx+ny=k1(k>1)
等式右边为小数,那么,当 a , b a, b a,b 不互质时,一定不存在整数 x , y x, y x,y ,满足 a x + b y = 1 ax+by=1 ax+by=1.

应用

洛谷P4549(模板题)

题目描述
给定一个 n n n 长度的序列 ( A 1 , … , A n ) (A_1, \dots, A_n) (A1,,An) ,存在一组序列 ( x 1 , … , x n ) (x_1, \dots, x_n) (x1,,xn)满足 m i n { A 1 x 1 + A 2 x 2 + ⋯ + A n x n &gt; 0 } min\{A_1x_1 + A_2x_2 + \dots + A_nx_n \gt 0\} min{A1x1+A2x2++Anxn>0}.
题解
先考虑 n = 2 n=2 n=2,显然 A 1 x 1 + A 2 x 2 A_1x_1+A_2x_2 A1x1+A2x2 的最小正整数解为 g c d ( A 2 , A 2 ) gcd(A_2, A_2) gcd(A2,A2).
n ≥ 2 n \ge 2 n2 时,直接 g c d gcd gcd 前两项再跟第三项 g c d gcd gcd 就可以了(为什么拓展到多项也可以,因为我也不会嘤嘤嘤),预处理一下,当 A i &lt; 0 A_i \lt 0 Ai<0 时,取 a b s ( A i ) abs(A_i) abs(Ai),即相应的系数 x i x_i xi 乘上 -1,不影响最终结果.

代码

#include <stdio.h>
#include <math.h>

int gcd(int a, int b)
{
        return b ? gcd(b, a%b) : a;
}

int main(void)
{
        int n, a[25], ans;
        scanf("%d", &n);
        for (int i = 0; i < n; i++)
        {
                scanf("%d", a+i);
                a[i] = abs(a[i]);
        }
        for (int i = 0; i < n-1; i++)
        {
                ans = gcd(a[i], a[i+1]);
                a[i+1] = ans;
        }
        printf("%d", ans);
        return 0;
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值