裴蜀定理
对于两个不全为0的整数a,b
1:有任意的整数x,y满足gcd(a,b)|ax+by
2:存在整数x,y使得ax+by = gcd(a,b)
第一条很好理解:
且
同理 且
则有
对于第二条:
假设
-
令第i次取余的结果为
根据模运算a%b = r可得a - kb = r,则
根据gcd的退出条件b = 0可以得知即为gcd的结果d
然后开始倒推:
- ①
- 代入回①
- ②
- 代入回②
- ③
- 代入回③
每步消掉一个,最后只剩下
最终会得到一个类似 的式子,其中都为 组成的式子
因为 是某次取余减去的倍数,一定是个整数,所以 一定都为整数,定理2得证
由此可以得到一条推论:
- 时当且仅当 时有解
可以用反证法证明,此处不再继续证明
裴蜀定理在数论和计算几何等其他重要的推论和证明中都会用到
扩展
对于一组不全为0的数,存在一组整数系数,使得:
同样的对于一组不全为0的数,若存在一组整数,使得:
则必定
简单点说,有一组不全为0的数,每个数可以取任意整数个(可以为负)
则取出来的结果一定是的倍数
对于求解这类问题的大于0的最小整数解时,可以将全部取绝对值,最后求出gcd即为答案
int ans = abs(a[1]);
for(int i = 2;i <= n;i++)
{
a[i] = abs(a[i]);
ans = __gcd(ans,a[i]);
}