卢卡斯定理

1卢卡斯定理的定义


假设我们要求的组合数为 C ( n , m ) ,因为这个数比较大,所以通常求的是 C ( n , m ) mod p。卢卡斯定理本来的定义是:


将 m 和 n 分别在 p 进制下表示出来:



那么一定有:


不过这样做,总显得不够方便、优美吧。我们可以把这个算式稍微修改一下:



接下来就要证明上面这个等价的算式了。


2卢卡斯定理的证明过程


为了表示方便,我们将 n 和 m 分别写为 n = sp + q,m = tp + r。q 和 r 为余数,即 q 和 r 均小于 p。接着我们可以得出(相当于构造):


( 1 + x ) ^ n ≡ ( 1 + x ) ^ ( sp + q ) ≡ ( ( 1 + x ) ^ p ) ^ s · ( 1 + x ) ^ q ( mod p )


想象一下用二项式定理将 ( 1 + x ) ^ p 展开的过程吧,除了第一项和最后一项,中间部分的系数均为 C ( p,i )。其中 p > i > 0,因此一定有 C ( p,i ) ≡ 0 ( mod p )。那么 ( 1 + x ) ^ p ≡ 1 + x ^ p ( mod p ),即原式 ≡ ( 1 + x ^ p ) ^ s · ( 1 + x ) ^ q ( mod p )。


再用二项式定理将 ( 1 + x ^ p ) ^ s 和 ( 1 + x ) ^ q 分别展开,得到:


接下来,也许你就能明白为什么我们要构造 ( 1 + x ) ^ n 了。比对等式左右两边 x ^ m = x ^ ( tp + r ) 的系数,必然是相等的(对应系数相等)。等式左边的系数为 C ( sp+q,tp + r ) = C ( m ,n )。在求等式右边的系数时,你会发现只有当 i = t,j = r 时才会产生 x ^ ( tp + r ) 的项。因此右边的系数为 C ( s,t)· C ( q,r ),与左边的 C ( m,n ) 相等,得证。


当然,如果不想设其他字母,可以写成 C ( m,n ) = C ( m mod p,n mod p ) · C ( m / p,n / p ),其中 / 表示除得的商。这样的表示方法是不是很优美呀?


3后记


我觉得卢卡斯定理看上去还是比较神奇的,但证明方法不是特别复杂吧。如果用卢卡斯定理编程递归求组合数,还是相当快速的。


最后 " 照例 " 讲一个小八卦啦。卢卡斯是 19 世纪的法国数学家,是汉诺塔的发明人!所以汉诺塔又称为 " 卢卡斯塔 ",点击下面的链接了解汉诺塔吧。同时,卢卡斯还保留了手工推最大质数的记录(当时没有计算机),证明了 2 ^ 127 - 1 是质数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值