lucas 定理(證明)
a、b是非負整數,p是質數。ab寫成p進製:a=a[n]a[n-1]...a[0],b=b[n]b[n-1]...b[0]。
則組合數c(a,b)與c(a[n],b[n])*c(a[n-1],b[n-1])*...*c(a[0],b[0]) mod p 相同
即:lucas(n,m,p)=c(n%p,m%p)*lucas(n/p,m/p,p)
證明:首先我們注意到 n=(ak...a2,a1,a0)p = (ak...a2,a1)p * p + a0
= [n/p]*p+a0
且m=[m/p]+b0
只要我們更夠證明 c(n,m)=c([n/p],[m/p]) * c(a0,b0) (mod p)
剩下的工作由歸納法即可完成
我們知道對任意質數p: (1+x)^p == 1+(x^p) (mod p)
注意!這裡一定要是質數。
(為什麼要是質數呢?
因為(1+x)^p=1^p+c(p,1)x+c(p,2)x^2+...+x^p
但p為質數時c(p,1),c(p,2),...,c(p,p-1) 模p都為0
所以(1+x)^p == 1+x^p (mod p)
對 模p 而言,接下來是讓我驚嘆的乙個構造證明,證明只有乙個公式如下:
上式左右兩邊的x^m的係數對模p而言一定同餘(為什麼),其中左邊的x^m的係數是 c(n,m) 而由於a0和b0都小於p
右邊的x^m ( = x^(([m/p]*p)+b0)) 一定是由 x^([m/p]*p) 和 x^b0 相乘而得 (即發生於 i=[m/p] , j=b0 時) 因此我們就有了
c(n,m)=c([n/p],[m/p]) * c(a0,b0) (mod p)
perfect!
瞎搞 Lucas定理證明
求證cn m i 0kc nimi modp 其中m ki 0mip i n ki 0nip i p是質數。首先,我們知道,n0 nmodp,m 0 mmodp 那麼原式相當於求證cn m c np mp cnmodp mmod pmodp 這樣就可以歸納一發證明整個定理了。首先我們知道,對於任意的...
Lucas定理以及證明
對著無數篇部落格終於 yy 懂了 lucas 定理,興奮之際趕緊寫下來 如果 p 是質數,那麼 c equiv c times c mod p 首先我們要知道乙個性質 如果 p 為質數,那麼有 c equiv 0 mod p 其中 n ne 0,p 這個很顯然吧,考慮把組合數的式子寫出來 c p n...
Lucas定理 推導及證明
當n m為大數,p為素數時,lucas定理是用來求 c n,m mod p的 值。適用領域範圍 在數論中求大組合數取模。表示式 c n,m p c n p,m p c n p,m p p lucas定理 我們令 n sp q m tp r q r p 那麼 在程式設計時你只要繼續對 呼叫lucas定...