简单数论

0. 阅读前须知

本文章仅存在于整数范围内。

a∣ba|b 表示 aa 是 bb 的因数。

gcd⁡(a,b)\gcd (a,b) 表示求最大公因数。

1. 同余

1.1 同余的定义

对于两个整数 a,ba,b ,如果它们除以 pp 的余数相同,则称它们模 pp 同余,记作:

a≡b(modp)a\equiv b\pmod p

带余除法 a÷p=k⋯⋯ba\div p=k\cdots\cdots b 也可写成 a≡b(modp)a\equiv b\pmod p

在模 pp 意义下,只有 0∼p−10\sim p-1 这 pp 个数。

1.2 同余的计算性质

如果 a≡b(modp)a\equiv b\pmod p:

a±k≡b±k(modp)a\pm k\equiv b\pm k\pmod p a×k≡b×k(modp)a\times k\equiv b\times k\pmod p ak≡bk(modp)a^k\equiv b^k\pmod p a≡b(modp)⇒p∣(a−b)a\equiv b\pmod p\Rightarrow p|(a-b)

2. 扩展欧几里得(exGCD)

2.1 exGCD 是干嘛的?

扩欧用于解形如下面的不定方程:

ax+by=gcd⁡(x,y)ax+by=\gcd(x,y)

2.2 exGCD 怎么写?

void exgcd(int a,int b,int &x,int &y)
{
   if(b==0)
   {
      x=1,y=0;
      return;
   }
   exgcd(b,a%b,y,x);
   y-=a/b*x;
}

证明见 oi-wiki

2.3 exGCD 解的值域

由于 ax+by=gcd⁡(a,b)ax+by=\gcd(a,b),所以必然有的解会爆 long long。

万幸的是,如果 b≠0b\ne 0,那么必然有一组解满足 ∣x∣≤b,∣y∣≤a|x|\le b,|y|\le a。

3. 裴蜀定理

方程 ax+by=cax+by=c 有解当且仅当 gcd⁡(a,b)∣c\gcd(a,b)|c。

4. 逆元

4.1 逆元的定义

如果 ax≡1(modp)ax\equiv 1\pmod p,则我们称 xx 是 aa 在模 pp 意义下的逆元,记作 x=a−1x=a^{-1}。

显然,xx 和 1a=a−1\dfrac{1}{a}=a^{-1} 在模 pp 意义下是等价的。

4.2 逆元存在性定理

xx 在模 pp 意义下存在逆元当且仅当 a⊥pa\bot p。(aa 与 pp 互质)

证明略。

  • 推论:当且仅当模数 pp 是质数,[1,p−1][1,p-1] 内所有整数都存在模 pp 意义下的逆元。00 没有逆元。此时称 [1,p−1][1,p-1] 是模 pp 意义下的一个乘法群。

4.3 逆元的一些性质

  • 定理:模 pp 意义下,若存在 xx 的逆元 x−1x^{-1},则唯一。
  • 定理:模质数 pp 意义下,[1,p−1][1,p-1] 内所有整数的逆元互不相同。

4.4 求逆元

可以用 exGCD 求逆元。

方程为:xx−1+pk=1xx^{-1}+pk=1

推导过程之后写。

4.5 线性求 1∼n1\sim n 的逆元

for(int i = 2; i <= n; i++)
	    ans[i] = (p - ans[p % i] * (p / i) % p);

4.6 线性求 a1∼ana_1\sim a_n 的逆元

记 pi=∏j=1iajp_i=\prod\limits _{j=1}^{i} a_j。

那么我们可以用exGCD求出 pn−1{p_n}^{-1},记作 vnv_n。

此时 vn×an=(∏i=1n−1ai)−1v_n\times a_n= \left(\prod\limits_{i=1}^{n-1}a_i\right)^{-1},记作 vn−1v_{n-1},同理,可以求出 v1∼vn−2v_1\sim v_{n-2}。

则 ai−1=vi×pi−1{a_i}^{-1}=v_i\times p_{i-1}

4.6 求 ab\dfrac{a}{b} 的逆元

设 ab≡x(modp)\dfrac{a}{b}\equiv x\pmod p

那么 a≡bx(modp)a\equiv bx\pmod p

记 x′=xax'=\dfrac{x}{a},那么 bx′≡1(modp)bx'\equiv 1\pmod p。

这个方程是可以解的。最终 x=ax′x=ax'。

5. 一些定理

5.1 费马小定理

lhq:费马小

费马小定理:如果质数 pp 满足 a⊥pa\bot p,则 ap−1≡1(modp)a^{p-1}\equiv 1\pmod p

  • 另一个形式:对于任意整数 aa,ap≡a(modp)a^p\equiv a\pmod p

总所周知,费马小也是可以求逆元的。

  • 条件:pp 为质数。
  • 方法:a−1=ap−2 mod pa^{-1}=a^{p-2}\bmod p

5.2 威尔逊定理

威尔逊定理(Whison Theorem):pp 是质数的充要条件是 (p−1)!≡1(modp)(p-1)!\equiv 1\pmod p

5.3 欧拉定理

欧拉定理(Eular Theorem):

a⊥p⇒aφ(p)≡1(modp)a\bot p\Rightarrow a^{\varphi(p)}\equiv 1\pmod p

其中 φ(m)\varphi(m) 表示 [1,m][1,m] 中与 mm 互质的数的个数。

5.4 卢卡斯定理

卢卡斯(Lucas)定理:

(nm) mod p=(⌊np⌋⌊mp⌋)×(n mod pm mod p) mod p\dbinom nm\bmod p= \begin{pmatrix}\left\lfloor \dfrac np\right\rfloor\\ \left\lfloor\dfrac mp\right\rfloor\end{pmatrix} \times\dbinom {n\bmod p}{m\bmod p}\bmod p

一般来说,我们不会只调用一次 LucasLucas。因为 LucasLucas 可以被 p=2p=2 卡掉,所以这个时候可以递归调用 LucasLucas。即

Lucas(n,m)=(nm)×Lucas(np,mp)Lucas(n,m)=\dbinom nm\times Lucas\left(\dfrac{n}{p},\dfrac{m}{p}\right)

6. 中国剩余定理

6.0 中国剩余定理的来源

「物不知数」问题:有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?

该问题最早见于《孙子算经》中,并有该问题的具体解法。宋朝数学家秦九韶于 1247 年《数书九章》卷一、二《大衍类》对「物不知数」问题做出了完整系统的解答。上面具体问题的解答口诀由明朝数学家程大位在《算法统宗》中给出:

三人同行七十希,五树梅花廿一支,七子团圆正半月,除百零五便得知。

6.1 线性同余方程组

给定 nn 个线性同余方程:

{x≡a1(modm1)x≡a2(modm2)⋯x≡an(modmn)\begin{cases}x\equiv a_1\pmod {m_1}\\x\equiv a_2\pmod {m_2}\\\cdots\\x\equiv a_n\pmod {m_n}\end{cases}

mim_i 两两互质,求 xx 的通解。

6.2 中国剩余定理(CRT)

记 M=∏miM=\prod m_i,Mi=MmiM_i=\dfrac{M}{m_i},tit_i 是在 MiM_i 在模 mim_i 意义下的逆元。

则:

x=kM+∑i=1naitiMix=kM+\sum_{i=1}^{n} a_it_iM_i

6.3 扩展中国剩余定理(exCRT)

如果 mim_i 两两不互质,那么就不能使用 CRT 了。

那什么是 exCRT 呢?

如果我们知道两个同余方程,将其合并成一个,这样就可以一个接着一个合并了。

见?

posted @ 2024-07-15 13:45  sLMxf  阅读(65)  评论(0)    收藏  举报  来源