裴蜀定理(贝祖定理)

裴蜀定理

对于两个不全为0的整数a,b

1:有任意的整数x,y满足gcd(a,b)|ax+by

2:存在整数x,y使得ax+by = gcd(a,b)

第一条很好理解:

gcd(a,b)|a  且 gcd(a,b)|b 

同理gcd(a,b)|ax 且 gcd(a,b)|by

则有gcd(a,b)|ax+by

对于第二条:

假设 a > b,gcd(a,b) = d

  • ​​​gcd(a,b) = gcd(b,a\ mod\ b) = gcd(a\ mod\ b, b\ mod(a\ mod\ b))

令第i次取余的结果为r_{i}

  • gcd(a,b) = gcd(b,r_{1}) = gcd(r_{1}, r_{2})...... = gcd(r_{n},r_{n+1}) = 1

根据模运算a%b = r可得a - kb = r,则

  • a = k_{1}b+r_{1} \ \ \ b = k_{2}r_{1}+r_{2}\ \ \ r_{1} = k_{3}r_{2}+r_{3}......
  • r_{n-3} = k_{n-1}r_{n-2} + r_{n-1}\ \ \ r_{n-2} = k_{n}r_{n-1} + r_{n}\ \ \ r_{n-1} = k_{n+1}r_{n}

根据gcd的退出条件b = 0可以得知r_{n}即为gcd的结果d

然后开始倒推:

  • r_{n-2} = k_{n}r_{n-1} + d \ \ d= r_{n-2} - k_{n}r_{n-1} ①
  • r_{n-3} = k_{n-1}r_{n-2} + r_{n-1} \Rightarrow r_{n-1} = r_{n-3} - k_{n-1}r_{n-2} 代入回①
  • d = r_{n-2} - k_{n}(r_{n-3}-k_{n-1}r_{n-2}) ②
  • r_{n-4} = k_{n-2}r_{n-3} + r_{n-2} \Rightarrow r_{n-2} = r_{n-4} - k_{n-2}r_{n-3} 代入回②
  • d = r_{n-3}(k_{n-2}(1+k_nk_{n-1})-k_n) + r_{n-4} ③
  • r_{n-5} = k_{n-3}r_{n-2} + r_{n-3} \Rightarrow r_{n-3} = r_{n-5} - k_{n-3}r_{n-4} 代入回③
  • ......

每步消掉一个r_i,最后只剩下 a,b

最终会得到一个类似 d = ax + by 的式子,其中x,y都为 k_i 组成的式子

因为 k_i 是某次取余减去的倍数,一定是个整数,所以 x,y 一定都为整数,定理2得证

由此可以得到一条推论:

  • ax+by = 1 时当且仅当 gcd(a,b) = 1 时有解

可以用反证法证明,此处不再继续证明

裴蜀定理在数论和计算几何等其他重要的推论和证明中都会用到

扩展

对于一组不全为0的数a_1,a_2......a_n,存在一组整数系数x_1,x_2......x_n,使得:

a_1x_1 + a_2x_2+......+a_nx_n = gcd(a_1,a_2......a_n)

同样的对于一组不全为0的数a_1,a_2......a_n,若存在一组整数x_1,x_2......x_n,使得:

a_1x_1 + a_2x_2+......+a_nx_n = d   则必定  gcd(a_1,a_2......a_n)|d

简单点说,有一组不全为0的数a_1,a_2......a_n,每个数可以取任意整数个(可以为负)

则取出来的结果一定是gcd(a_1,a_2......a_n)的倍数

对于求解这类问题的大于0的最小整数解时,可以将a_i全部取绝对值,最后求出gcd即为答案

int ans = abs(a[1]);
for(int i = 2;i <= n;i++)
{
    a[i] = abs(a[i]);
	ans = __gcd(ans,a[i]);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值