gcd的推论,多个数的gcd的转化
gcd的推论,多个数的gcd的转化
\(gcd(a,b,c,d)=gcd(a,a-b,b-c,c-d)\)
证明如下:
-
先证\(gcd(a,b,c,d)<=gcd(a,a-b,b-c,c-d)\)
设\(k=gcd(a,b,c,d)\)
若\(k|a,k|b\),则有\(k|a-b\)
同理可得\(k|b-c\),\(k|c-d\)
所以k是a,a-b,b-c,c-d这四个数的公共因子,但不一定是最大的
-
再证\(gcd(a,b,c,d)>=gcd(a,a-b,b-c,c-d)\)
设\(k=gcd(a,a-b,b-c,c-d)\)
若\(k|a,k|a-b\),则有\(k|a-(a-b)\)
所以有k|b
同理可得\(k|c\),\(k|d\)
所以k是a,b,c,d这四个数的公共因子,但不一定是最大的
-
因为这两者关系同时存在,故而只有一种可能
\(gcd(a,b,c,d)=gcd(a,a-b,b-c,c-d)\)
得证
其他
- 该推论的应用,该推论将原本的数字转成了差分形式,因而可以结合差分的性质一起使用。
- 由于gcd函数的设置可以让某个数和0gcd,从而返回自身
long long gcd(long long a,long long b) { return b?gcd(b,a%b):a; }