OI里的数论:简单数论

OI里的数论:简单数论

零、二项式定理

P.S.在膜 n n n意义下时 ( x + y ) n ≡ x n + y n (x+y)^n≡x^n+y^n (x+y)nxn+yn


一、欧几里得算法

即辗转相除法。 g c d ( a , b ) = g c d ( b , a m o d    b ) gcd(a,b) = gcd(b,a \mod b) gcd(a,b)=gcd(b,amodb)


二、裴蜀定理

对于不定方程 a x + b y = m ax + by = m ax+by=m , 其有解的充要条件为 g c d ( a , b )   ∣   m gcd(a, b) \ | \ m gcd(a,b)  m


三、拓展欧几里得

a x + b y = g c d ( a , b ) ax + by = gcd(a,b) ax+by=gcd(a,b)的整数解。

求特解:对于方程 a x + b y = g c d ( a , b ) ax+by = gcd(a,b) ax+by=gcd(a,b),我们可以不断的往下变成 b x + ( a m o d    b ) y = g c d ( a , b ) bx+(a\mod b)y=gcd(a,b) bx+(amodb)y=gcd(a,b) ,按照欧几里得的过程, b b b会变成 0 0 0 a a a就等于 g c d ( a , b ) gcd(a,b) gcd(a,b),所以得到由原方程往下推了不知道多少次的方程 a x = g c d ( a , b ) ax=gcd(a,b) ax=gcd(a,b) 来说,得到一个解 x = 1 , y = 0 x = 1, y = 0 x=1,y=0。现在得到了这个方程的解,再回溯回去,就可以得出原方程 a x + b y = g c d ( a , b ) ax+by = gcd(a,b) ax+by=gcd(a,b)的一个特解。

求所有解:对于关于 x , y x,y xy的方程 a x + b y = g ax+by = g ax+by=g来说,让 x x x增加 b g \dfrac{b}{g} gb,让 y y y减少 y g \dfrac{y}{g} gy,等式两边还相等。


四、乘法逆元

tip:p的倍数的逆元无法求出。

扩展欧几里得

void Exgcd(ll a, ll b, ll &x, ll &y) {
    if (!b) x = 1, y = 0;
    else Exgcd(b, a % b, y, x), y -= a / b * x;
}

其他的扩展


五、费马小定理

p p p质数, a a a不是 p p p的倍数,则 a p − 1 ≡ 1 ( m o d p ) a^{p-1}≡1\pmod p ap11(modp)


六、欧拉定理

欧拉函数: φ ( n ) φ(n) φ(n)表示 1 1 1 n − 1 n-1 n1 n n n互质的数。

欧拉函数求法: φ ( n ) = n ∗ ( 1 − 1 p 1 ) ∗ ( 1 − 1 p 2 ) ∗ . . . ∗ ( 1 − 1 p k ) φ(n)=n*(1-\dfrac{1}{p_1})*(1-\dfrac{1}{p_2})*...*(1-\dfrac{1}{p_k}) φ(n)=n(1p11)(1p21)...(1pk1)。(时间复杂度 O ( n ) O(\sqrt{n}) O(n )

欧拉定理:若 a , p a,p a,p互质,则有 a φ ( p ) ≡ 1 ( m o d p ) a^{\varphi(p)}\equiv 1 \pmod p aφ(p)1(modp)


七、扩展欧拉定理

a c ≡ { a c m o d    φ ( m ) g c d ( a , m ) = 1 a c g c d ( a , m ) ≠ 1 ∧ c ≤ φ ( m ) a c m o d    φ ( m ) + φ ( m ) g c d ( a , m ) ≠ 1 ∧ φ ( m ) ≤ c a^{c} \equiv \begin {cases}a^{c \mod \varphi(m)}&gcd(a,m)=1\\a^c&gcd(a,m)\not=1 \land c\leq \varphi(m) \\ a^{c\mod\varphi(m)+\varphi(m)}&gcd(a,m)\not=1\land \varphi(m) \leq c\end{cases} acacmodφ(m)acacmodφ(m)+φ(m)gcd(a,m)=1gcd(a,m)=1cφ(m)gcd(a,m)=1φ(m)c


八、中国剩余定理

中国剩余定理:设正整数 m 1 , m 2 , m_1,m_2, m1,m2,…… m k m_k mk两两互素,则同余方程组

{ x ≡ a 1 ( m o d m 1 ) x ≡ a 2 ( m o d m 2 ) . . . . . . x ≡ a k ( m o d m k ) \begin{cases}x\equiv a_1 \pmod{m_1}\\x\equiv a_2 \pmod{m_2}\\......\\x\equiv a_k \pmod{m_k}\end{cases} xa1(modm1)xa2(modm2)......xak(modmk)

有整数解,则解在 m o d    M = ∏ i = 1 k m i \mod M=\prod^{k}_{i=1}m_i modM=i=1kmi下有意义,则 x = ( a 1 × M 1 × M 1 − 1 + a 2 × M 2 × M 2 − 1 + . . . . . . + a k × M k × M k − 1 ) m o d    M x=(a_1\times M_1\times M_1^{-1}+a_2\times M_2\times M_2^{-1}+......+a_k\times M_k\times M_k^{-1})\mod M x=(a1×M1×M11+a2×M2×M21+......+ak×Mk×Mk1)modM

其中 M i = M / m i , M i − 1 × M i ≡ 1 ( m o d m i ) M_i=M/m_i,M_i^{-1}\times M_i \equiv 1\pmod{m_i} Mi=M/mi,Mi1×Mi1(modmi)


九、扩展中国剩余定理:不保证两两互素

先从简单的情况考虑

∵ { x ≡ c 1 ( m o d m 1 ) x ≡ c 2 ( m o d m 2 ) \because\begin{cases}x\equiv c_1\pmod{m_1}\\x\equiv c_2\pmod{m_2}\end{cases} {xc1(modm1)xc2(modm2)

∴ x ≡ i n v ( m 1 gcd ⁡ ( m 1 , m 2 ) , m 2 gcd ⁡ ( m 1 , m 2 ) ) × c 2 − c 1 gcd ⁡ ( m 1 , m 2 ) × m 1 + c 1 ( m o d m 1 × m 2 gcd ⁡ ( m 1 , m 2 ) ) \therefore x\equiv inv(\frac{m_1}{\gcd(m_1,m_2)},\frac{m_2}{\gcd(m_1,m_2)})\times\frac{c_2-c_1}{\gcd(m_1,m_2)}\times m_1+c_1\pmod{\frac{m_1\times m_2}{\gcd(m_1,m_2)}} xinv(gcd(m1,m2)m1,gcd(m1,m2)m2)×gcd(m1,m2)c2c1×m1+c1(modgcd(m1,m2)m1×m2)

因此运算时可以选取两个式子进行推广。


十、二次剩余

解决形如 x 2 ≡ n ( m o d p ) x^2\equiv n\pmod{p} x2n(modp)的问题

定义勒让德符号 ( n p ) (\dfrac{n}{p}) (pn),当 p p p n n n的倍数则为 0 0 0,否则若 n n n p p p的二次剩余则为 1 1 1,否则为 − 1 -1 1

欧拉判别准则 ( n p ) ≡ n p − 1 2 ( m o d p ) \left({n\over p}\right)≡n^{\frac {p-1}2}\pmod p (pn)n2p1(modp)

a a a满足 ( a 2 − n p ) = − 1 (\dfrac{a^2-n}{p})=-1 (pa2n)=1。设 ω = a 2 − n \omega = \sqrt{a^2-n} ω=a2n

∴ x = ( a + ω ) p + 1 2 \therefore x=(a+\omega)^{\frac{p+1}{2}} x=(a+ω)2p+1


十一、n次剩余

咕咕咕


十二、卢卡斯定理

( s p + q t p + r ) ≡ ( s t ) ∗ ( q r ) ( m o d p ) (^{tp+r}_{sp+q})≡(^{t}_{s})*(^{r}_{q})\pmod p (sp+qtp+r)(st)(qr)(modp)


十三、扩展卢卡斯定理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值