数论复习小记

中国剩余定理

问题描述:

给出n条形如 xai(modmi) x ≡ a i ( mod m i ) ,那么你现在需要解出x。

实现方式

我们现在来考虑一种比较简单的情况:各个方程的m都是互质的,那么我们如果有一个 x=ni=1f(i) x = ∑ i = 1 n f ( i ) 满足 f(i)%mi=ai,f(i)%aj,(j!=i)=0 f ( i ) % m i = a i , f ( i ) % a j , ( j ! = i ) = 0 ,那么这个x就是一个满足条件的解了。
我们来构造一下,记 M=Πmi M = Π m i

f(i)=Mmi((Mmi)1%mi)ai f ( i ) = M m i ∗ ( ( M m i ) − 1 % m i ) ∗ a i

假设m不互质怎么办呢?没关系我们可以考虑合并方程。
对于 xa1(modm1),xa2(modm2) x ≡ a 1 ( mod m 1 ) , x ≡ a 2 ( mod m 2 ) ,则 x=a1+m1k1=a2+m2k2 x = a 1 + m 1 k 1 = a 2 + m 2 k 2
经过一阵子推导我们可以得到 xa1+m1cd(m1d)1(m2d)(modm1m2d)(c=a2a1,d=(m1,m2)) x ≡ a 1 + m 1 c d ( m 1 d ) − 1 ( 这 里 的 逆 元 是 关 于 m 2 d 的 ) ( mod m 1 m 2 d ) ( c = a 2 − a 1 , d = ( m 1 , m 2 ) )

卢卡斯定理

p是素数,则C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p

kummer定理

描述

这里写图片描述

证明

这里写图片描述

阶乘表示法

p=qe p = q e (q是素数,结合中国剩余定理即可处理任意模数)
组合数可以表示成阶乘和阶乘逆元的乘积,所以我们只要考虑如何表示阶乘。设 n!=qk(n)v(n) n ! = q k ( n ) v ( n ) ,其中vn与q互质。
阶乘n!可以表示成前n个连续正整数1,2,⋯,n的乘积,将这n个数中与q互质的数提取出来,这一部分的数乘积累积给v(n)。而不互质的数必然是q,2⋅q,⋯, n/qq ⌊ n / q ⌋ ∗ q ,每个数字提取一个q,则至少可以提取出⌊n/q⌋个q累加给k(n)。那么剩下没考虑的数字就是1,2,⋯, n/q ⌊ n / q ⌋ 也即 n/q! ⌊ n / q ⌋ ! ,再次重复上述过程进行提取即可。
复杂度是O( qe q e +log n)

二次剩余

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值