亮色主题 暗色主题

纯手打(悲)

同余

定义

设整数 m0m\ne0。若 m(a,b)m\mid(a,b),称 mm 为模数(模),aa 同余于 bbmmbbaamm 的剩余,记作 abmodma\equiv b\mod m,这样的等式,称为模 mm 的同余式,简称同余式。

性质

  • 自反性:aamodma\equiv a\mod m
  • 对称性:若 abmodma\equiv b\mod m,则 bamodmb\equiv a\mod m
  • 传递性:若 abmodma\equiv b\mod mbcmodmb\equiv c\mod m,则 acmodma\equiv c\mod m
  • 线性运算:若 a,b,c,dZa,b,c,d\in \mathbf{Z}mNm\in \mathbf{N}^*ab(modm)a\equiv b(\mod m)cd(modm)c\equiv d(\mod m) 则有:
    • acbd(modm)a\mp c\equiv b\mp d(\mod m)
    • a×cb×d(modm)a\times c\equiv b\times d(\mod m)
  • a,bZa,b\in \mathbf{Z}k,mNk,m\in \mathbf{N}^*ab(modm)a\equiv b(\mod m),则 akbk(modmk)ak\equiv bk(\mod mk)
  • a,bZa,b\in \mathbf{Z}d,mNd,m\in \mathbf{N}^*dad\mid adbd\mid bdmd\mid m,则当 abmodma\equiv b\mod m 成立时,有 adbdmodmd\dfrac{a}{d}\equiv \dfrac{b}{d}\mod \dfrac{m}{d}
  • a,bZa,b\in \mathbf{Z}d,mNd,m\in \mathbf{N}^*dmd\mid m,则当 abmodma\equiv b\mod m 成立时,有 abmodda\equiv b\mod d
  • a,bZa,b\in \mathbf{Z}d,mNd,m\in \mathbf{N}^*,则当abmodma\equiv b\mod m 成立时,有 gcd(a,m)=gcd(b,m)\gcd(a,m)=\gcd(b,m)。若 dd 能整除 mmaabb 中的一个,则 dd 必定能整除 aabb 中的另一个。

如果一个线性同余方程 ax1(modb)ax\equiv1(\mod b),则 xx 称为 amodba\mod b 的逆元,记作 a1a^{-1}

数论函数

数论函数指定义域为正整数的函数。数论函数也可以视作一个数列。

积性函数

定义

若函数 f(n)f(n) 满足 f(1)=1f(1)=1x,yN∀x,y\in\mathbf{N}^*gcd(x,y)=1\gcd(x,y)=1 都有 f(xy)=f(x)f(y)f(xy)=f(x)f(y),则 f(n)f(n) 为积性函数。

若函数 f(n)f(n) 满足 f(1)=1f(1)=1x,yN∀x,y\in\mathbf{N}^* 都有 f(xy)=f(x)f(y)f(xy)=f(x)f(y),则 f(n)f(n) 为完全积性函数。

性质

解释

f(x)f(x)g(x)g(x) 均为积性函数,则以下函数也为积性函数:

h(x)=f(xp)h(x)=f(x^p) h(x)=fp(x)h(x)=f^p(x) h(x)=f(x)g(x)h(x)=f(x)g(x) h(x)=dxf(d)g(xd)h(x)=\sum\limits_{d\mid x}f(d)g(\dfrac{x}{d})

x=pikix=∏p_i^{k_i}

F(x)F(x) 为积性函数,则有 F(x)=F(piki)F(x)=∏F(p_i^{k_i})

F(x)F(x) 为完全积性函数,则有 F(x)=F(pi)kiF(x)=∏F(p_i)^{k_i}

例子

  • 单位函数:ε(n)=[n=1]\varepsilon(n)=[n=1]。(完全积性)
  • 恒等函数:idk(n)=nkid_k(n)=n^kid1(n)id_1(n) 同常记作 id(n)id(n)。(完全积性)
  • 常数函数:1(n)=11(n)=1。(完全积性)
  • 除数函数:σk(n)=dndk\sigma_k(n)=\sum\limits_{d\mid n}d^kσ0(n)\sigma_0(n) 通常记作 d(n)d(n)τ(n)\tau(n)σ1(n)\sigma_1(n) 通常记作 σ(n)\sigma(n)

欧拉函数

定义

  • 欧拉函数(Euler's totient function),即 φ(n)φ(n),表示的是小于等于 nnnn 互质的数的个数。
  • 形式化的表示:φ(n)=i=1n[gcd(i,n)=1]φ(n)=\sum\limits_{i=1}^n[\gcd(i,n)=1]
  • φ(n)=1φ(n)=1
n 1 2 3 4 5 6 7 8 9 10
φ(n)φ(n) 1 2 4 2 6 4 6 4

递推式:φ(n)=n×(11pi)φ(n)=n\times∏(1-\dfrac{1}{p_i})

性质

欧拉函数是积性函数。

n=pkn=p^k,其中 pp 是质数,那么 φ(n)=pkpk1φ(n)=p^k-p^{k-1}。(根据定义可知)

由唯一分解定理,设 n=i1spikin=∏\limits_{i-1}^sp_i^{k_i},其中 pip_i 是质数,有 φ(n)=n×i1spi1piφ(n)=n\times∏\limits_{i-1}^s\dfrac{p_i-1}{p_i}

计算单个数的欧拉函数值

int euler_phi(int n)
{
	int ans = n;
	for(int i = 2;i * i <= n;i++)
	{
		if(n % i == 0)
		{
			ans = ans / i * (i - 1);
			while(n % i == 0) n /= i;
		}
	}
	if(n > 1) ans = ans / n * (n - 1);
	return ans;
}

筛法求欧拉函数

  • 每一个合数 nn 都是被最小的质因子 pjp_j 筛掉
  • 考虑 n/pjn/p_j 是否能整除 pjp_j
void pre(int n)
{
	phi[1] = 1;
	int cnt = 0;
	for(int i = 2;i <= n;i++)
	{
		if(!not_prime[i])
		{
			prime[cnt++];
			phi[i] = i - 1;
		}
		for(int j = 0;j < cnt;j++)
		{
			if(i * prime[j] > n) break;
			not_prime[i * prime[j]] = true;
			if(i % prime[j] == 0)
			{
				phi[i * prime[j]] = phi[i] * prime[j];
				break;
			}
			phi[i * prime[j]] = phi[i] * phi[prime[j]];
		}
	}
}

欧拉定理(欧拉降幂)

欧拉定理

与欧拉函数紧密相关的一个定理就是欧拉定理。其描述如下:

gcd(a,m)=1\gcd(a,m)=1,则 aφ(m)1(modm)a^{φ(m)}\equiv1(\mod m)

扩展欧拉定理

$$a^b\equiv\begin{cases} a^{b\mod φ(p)},&\gcd(a,p)=1\\ a^b,&\gcd(a,p)\ne1,b<φ(p)\\ a^{b\mod φ(p)+φ(p)},&\gcd(a,p)\ne1,b\geφ(p) \end{cases}(\mod p) $$

数论分块

介绍

h

例子

原理

  • 原理 1

  • 原理 2

ni\dfrac{n}{i} 最多只有 2n2\sqrt{n} 种取值。

过程