质数与约数

1.调和级数

\[\sum_{i=1}^n \frac{1}{i}=O(\log n) \]

  • Proof(粗略计算):

\[\begin{aligned}\sum_{i=1}^n \frac{1}{i}&= \sum_{i=0}^{\log n} \sum_{j=2^i}^{2^{i+1}-1}\frac{1}{j}\\&= \sum_{i=0}^{\log n} k (k \leq 1) \\&= O(\log n)\\\end{aligned} \]

  • 更精确的公式:

    \[\sum_{i=1}^n \frac{1}{i}=\ln n+ \gamma+ \varepsilon (n) \]

  • 其中:

    \[\gamma \approx0.57721 56649 01532 \]

    \[\varepsilon (n) \approx \dfrac{1}{2n} \]

2.质数个数

\(N\) 以内的质数个数:

\[F(N) \approx \dfrac{N}{\ln N} \]

也就是说,每 \(\ln N\) 个数中就可能出现一个质数。

则暴力寻找第一个比 \(x\) 大(小)的质数的时间复杂度为 \(O(\sqrt{x} \ln x)\),当 \(x\leq10^{14}\) 时可以在 \(1s\) 内跑过。

3.线性筛

在线性筛中,我们可以实现每一个合数都只被它的最小质因子筛去一次。

\(x\) 的最小质因子为 \(mnp(x)\)

考虑枚举 \(i\) 和质数 \(j\),如果 \(mnp(ij)=j\),那么我们就将 \(ij\) 标记为合数。

结论:\(mnp(ij)=j\) 的充要条件是 \(j\leq mnp(i)\)

必要性:若 \(j>mnp(i)\),则 \(ij\) 可以表示为 \(mnp(i) \times \dfrac{i}{mnp(i)} \times j\),与 \(mnp(ij)=j\) 矛盾。

充分性:\(mnp(ij)=\min(mnp(i),j)=j\)

根据结论进行实现即可。

void Solve(){
	for(int i=2;i<=n;i++){
		if(!vis[i]) prime.push_back(i);
		for(int j:prime){
			if(i>n/j) break;
			vis[i*j]=1;
			if(!i%j) break;
		}
	}
}

4.算术基本定理

\[N=p_1^{c_1} \times p_2^{c_2} \times p_3^{c_3} \times \dots \times p_m^{c_m}=\prod_{i=1}^m p_i^{c_i} \]

其中:\(p_i\) 为质数,\(c_i\) 为常数,\(p_1<p_2<p_3<\dots<p_m\)

由此可得,\(N\) 至多只有一个大于 \(\sqrt{N}\) 的质因子。

\(N\) 的约数个数:

\[Cnt(N)=\prod_{i=1}^m(c_i+1) \]

\(N\) 的约数和:

\[Sum(N)=\prod_{i=1}^m (\sum_{j=0}^{c_i}p_i^j) \]

从组合角度可以证明。

\(1 \sim N\) 的正约数集合:考虑用倍数法,枚举 \(i\) 作为约数,则 \(i,2i,3i,4i\dots\lfloor\dfrac{N}{i}\rfloor i\) 的正约数集合中都含有 \(i\)

int n;
vector<int> S[N];
void Solve(){
	for(int i=1;i<=n;i++)
		for(int j=1;i*j<=n;j++)
			S[i*j].push_back(i);
	for(int i=1;i<=n;i++){
		for(int j:S[i])
			printf("%d ",j);
		puts("");
	}
}

该算法的时间复杂度为 \(O(\sum_{i=1}^N \dfrac{N}{i})=O(N \log N)\)
由此得到推论:\(1\sim N\) 的正约数集合大小之和不会超过 \(N \log N\)

Ex.1 [P1463]反素数

  • 引理 1:\([1,N]\) 中最大的反素数,就是 \([1,N]\) 中约数个数最多的数中的最小的一个。

  • 引理 2:对于 \(\forall i \in [1,N]\),不同的质因子个数不会超过 \(10\),所有质因子的指数之和不会超过 \(30\)

  • 引理 3:设所有在 \([1,N]\) 中的反素数集合为 \(S\) 则对于 \(\forall k \in S\),有:

    \[k=\prod_{i=1}^mp_i^{c_i},c_1\geq c_2\geq c_3\geq \dots\geq c_m \]

    Proof:由引理 1 与 \(i \in [1,N]\) 得,把指数尽量加在较小质数上约数个数更大。

暴搜+剪枝即可。

5.\(\gcd\)\(\operatorname{lcm}\)

  • 二者转化关系:

    \[\operatorname{lcm}(a,b)=\dfrac{a\times b}{\gcd(a,b)} \]

  • Proof:\(a=\gcd(a,b)\times k_1,b=\gcd(a,b)\times k_2\),可得 \(k_1 \perp k_2\)

    \(\operatorname{lcm}(a,b)=k_1\times k_2 \times gcd(a,b)=\dfrac{a\times b}{\gcd(a,b)}\)

  • 更相减损术 \((a \geq b)\)

    \[\gcd(a,b)=\gcd(a,a-b)=\gcd(b,a-b) \]

  • Proof:以 \(\gcd(a,b)=\gcd(a,a-b)\) 为例。设 \(a,b\) 的公约数集合为 \(S_1\)\(a,a-b\) 的公约数集合为 \(S_2\)。对于 \(\forall k \in S_1\)\(a=k\times x_1,b=k\times x_2,a-b=k\times (x_1-x_2)\),则 \(S_1 \subseteq S_2\)。同理可得 \(S_2 \subseteq S_1 \Rightarrow S_1=S_2\),命题得证。

  • 辗转相除法:

    \[\gcd(a,b)=\gcd(b,a\bmod b)=\gcd(a,a\bmod b) \]

  • Proof:与更相减损术同理,令 \(a=pb+r \ (0 \le r <b)\),则 \(a \bmod b=r=a-pb\)。对于 \(\forall k \in S_1\)\(a=k\times x_1,b=k\times x_2,r=k\times (x_1-k_2\times p)\)。由此可得 \(S_1=S_2\)

Ex.2 GCD 与 LCM

解法 1:

\(A=x_1\times GCD,B=x_2\times GCD\)。则 \(LCM=\dfrac{A\times B}{GCD}=x_1\times x_2\times GCD\)。考虑枚举 \(x_1\),则\(A=x_1\times GCD,B=\dfrac{LCM}{x_1}\)。当 \(x_1\) 合法时,有 \(x_1 \mid \dfrac{A}{GCD},\gcd(x_1,\dfrac{LCM}{GCD\times x_1})=1\)
考虑 \(x_1\) 的枚举范围:

\[\begin{aligned}\dfrac{A\times B}{GCD}&=LCM \\\dfrac{A\times B}{GCD^2}&= \dfrac{LCM}{GCD} \\\dfrac{A^2}{GCD^2}&\leq \dfrac{LCM}{GCD} \\\dfrac{A}{GCD} &\leq \sqrt{\dfrac{LCM}{GCD}}\\x_1 & \leq \sqrt{\dfrac{LCM}{GCD}}\\\end{aligned} \]

倒序枚举 \(x_1\),由于 \(x_1\) 越大,\(B-A\) 越小,则当找到第一个满足以上所有条件的 \(x_1\) 时停止枚举,此时答案为 \(\dfrac{LCM}{x_1}-x_1 \times GCD\)

解法 2:

由于 \(x_1\times x_2=\dfrac{LCM}{GCD}\),则考虑将 \(\dfrac{LCM}{GCD}\) 分解质因数。设\(\dfrac{LCM}{GCD}=D\),由 \(\gcd(x_1,x_2)=1\) 得,\(x_1,x_2\) 不会有相同的质因子。则可以二进制枚举 \(D\) 的每一个质因子分给 \(x_1\) 还是 \(x_2\),答案取 min 即可。

Ex.3 Neko Does Maths

答案可表示为:

\[\operatorname{lcm}(a+k,b+k)=\dfrac{(a+k)(b+k)}{\gcd(a+k,b+k)}=\dfrac{(a+k)(b+k)}{\gcd(b+k,a-b)} \]

考虑枚举 \(a-b\) 的因子 \(w\) 作为分母,显然 \(k\) 越小答案越优。分两种情况讨论:

  • \(w \mid b\) 时,\(k\) 可以取 \(0\)
  • 否则,需要找到一个 \(k\),满足 \(w\mid (b+k)\)。易得 \(k=w- (b \bmod w)\)
  • 所有得到的 \(\operatorname{lcm}(a+k,b+k)\) 中的最小值即为答案。

6.整除分块/数论分块

整除分块/数论分块

整除分块通常用来快速求出形如这样的式子:

\[\sum_{i=1}^n f(i)g(\lfloor\dfrac{n}{i} \rfloor) \]

我们如果能够 \(O(1)\) 求出一段 \(f(i)\) 的和与某一个 \(g(i)\) 的值,那么利用整除分块,上式的值就能在 \(O(\sqrt{n})\) 的复杂度内求出。

\(h(i)=\lfloor \dfrac{n}{i} \rfloor\),将所有 \(h(i)\) 相等的 \(i\) 分为一块。那么 \(h(i)\) 不同的取值不会超过 \(2\sqrt{n}\)

\(i\leq \sqrt{n}\) 时,最多有 \(\sqrt{n}\)\(\lfloor \dfrac{n}{i} \rfloor\);当 \(i>\sqrt{n}\) 时,\(\dfrac{n}{i}<\sqrt{n}\),不同的 \(\lfloor \dfrac{n}{i} \rfloor\) 也不会超过 \(\sqrt{n}\) 个。

下面是一个更为严谨的证明。

\(x_1,x_2 \in [1,\sqrt{n}],x_2=x_1+1\)。设 \(y_1=\lfloor \dfrac{n}{x_1} \rfloor,y_2=\lfloor \dfrac{n}{x_2} \rfloor\),有 \(y1>y2\)

假设 \(y1=y2=k\geq\sqrt{n}\)。则有 \((0\leq c_1<x_1,0\leq c_2 <x_1+1)\)

\[\begin{aligned}x_1k+c_1&=(x_1+1)k+c_2\\x_1k+c_1&=x_1k+k+c_2\\c_1&=k+c_2\\k\geq \sqrt{n}&\Rightarrow c_1\geq\sqrt{n}\geq x_1\end{aligned} \]

\(c_1<x_1\) 矛盾,假设不成立。则 \(y_1>y_2\) 得证。

对于 \(\forall i \in [y_2+1,y_1]\)\(f(i)=x_1\)

取上界 \(y_1\) 时,\(\lfloor \dfrac{n}{y_1} \rfloor=x_1\)

取下界 \(y_2+1\) 时:

\[\begin{aligned}x_2\times y_2 +r &= n \ (0 \leq r < x_2) \\x_2 \times (y_2+1) & < n \\x_2 &< \lfloor \dfrac{n}{y_2+1} \rfloor \leq x_1\end{aligned} \]

则有 \(\lfloor \dfrac{n}{y2+1} \rfloor=x_1\)

对于 \(\forall i \in [1,\sqrt{n}]\)\(f(i)\) 两两不同;

对于 \(\forall i \in [\sqrt{n},n]\),有连续一段的 \(f(i)\) 相同,且与 \([1,\sqrt{n}]\) 中的数字一一对应。

命题得证。

接下来考虑怎么将这些块划分出来。

注意到一个块的左端点 \(L\) 一定是上一个块的右端点加一,所以我们只需要求出这个块的右端点 \(R\)

根据定义得,\(R\) 即为最大的使得 \(\lfloor \dfrac{n}{i} \rfloor =k\) 最大的 \(i\)

\[\lfloor \dfrac n i \rfloor \leq \dfrac n i \Rightarrow i\lfloor \dfrac n i \rfloor \leq n \Rightarrow i\leq \dfrac{n}{\lfloor \dfrac n i \rfloor} \]

可得 \(R=\bigg \lfloor \dfrac{n}{\lfloor \dfrac{n}{L} \rfloor} \bigg \rfloor\)

下面是求 \(\sum_{i=1}^n \lfloor \dfrac{n}{i}\rfloor\) 的一份参考代码。

ll DivBlock(){
	ll res=0,j=0;
	for(int i=1;i<=n;i=j+1){
		j=n/(n/i);
		res+=1ll*(j-i+1)*(n/i);
	}
	return res;
}

当上界 \(n\) 与被除数 \(k\) 不相等时,为避免越界,我们需要加一下特判:

ll DivBlock(){
	ll res=0,j=0;
	for(int i=1;i<=n;i=j+1){
		if(k/i==0) break;
		else j=min(k/(k/i),n);
		res+=1ll*(k/i)*(j-i+1);
	}
	return res;
}

若下取整改为上取整,也可以用类似的方法做。

此时,我们要求的 \(R\) 即为使得 \(\lceil \dfrac n i \rceil=\lceil \dfrac n L \rceil\) 的最大的 \(i\)

\[\lceil \dfrac n i \rceil -1<\dfrac n i \Rightarrow i(\lceil \dfrac n i \rceil-1)<n \Rightarrow i< \dfrac n {\lceil \dfrac n i \rceil-1} \]

由此可得 $R=\bigg\lfloor \dfrac{n-1}{\lceil \dfrac n L \rceil-1}\bigg \rfloor $。

重要结论

Conclusion 1:若 \(i\) 为一个块的右端点,则 \(\lfloor \frac n i \rfloor\) 也为某个块的右端点。

反证法。设存在一个 \(i\) 为一个块的右端点,且 \(\lfloor \frac n i \rfloor\) 不为某个块的右端点。

下面记 \(x=\lfloor \frac n i \rfloor\)。命题等价于存在一个右端点 \(i\),使得 \(\lfloor \frac{n}{x} \rfloor=\lfloor \frac{n}{x+1} \rfloor\)

由右端点计算公式,等式左边为 \(i\),即 \(\lfloor \frac{n}{x+1} \rfloor=i\),即 \(n=i(x+1)+p=xi+i+p\)

\(n=xi+r\),那么有 \(0\leq r<i\)。则 \(xi+i+p>xi+r=n\),矛盾。

Conclusion 2:设共有 \(m\) 个块,\(R_i\) 为一个块的右端点,则 \(\lfloor\dfrac n {R_i} \rfloor=R_{m-i+1}\)

结合 结论 1 与 上面的对整除分块的证明 易得。

Conclusion 3:设所有 \(\lfloor \frac n i \rfloor \ (1\leq i\leq n)\) 的集合为 \(S\),所有右端点的集合为 \(T\),有 \(S=T\)

由结论 1,所有的 \(\lfloor \frac n i \rfloor\) 都能表示为一个右端点,则 \(S\subseteq T\)

由右端点计算公式,\(R= \lfloor \frac{n}{\lfloor \frac{n}{L} \rfloor} \rfloor\),所有的右端点都能表示为一个 \(\lfloor \frac n i \rfloor\),则 \(T\subseteq S\)

得出 \(S=T\)

Conclusion 4\(i\) 为右端点的充要条件是 \(\lfloor\frac{n}{\lfloor \frac n i \rfloor} \rfloor=i\)

必要性:由右端点计算公式易得。

充分性:设存在一个 \(i\)\(\lfloor\frac{n}{\lfloor \frac n i \rfloor} \rfloor=i\)\(\lfloor \frac n i \rfloor =\lfloor \frac n {i+1}\rfloor\)。设 \(\lfloor \frac n i \rfloor =\lfloor \frac n {i+1}\rfloor=k\)

\(\lfloor\frac{n}{k} \rfloor=i\),得 $n=ki+r \ (0\leq r<k) $。

\(\lfloor \frac n {i+1} \rfloor =k\),得 \(n=k(i+1)+p=ki+k+p \ (0\leq p<i+1)\)

\(ki+k+p>ki+r\),矛盾。故充分性成立。

7.欧拉函数

定义与求法

定义:设 \(\varphi(n)\)\(n\) 的欧拉函数值,则:

\[\varphi(i)=\sum_\limits{i=1}^n[i\perp n] \]

也就是 \(1\sim n\) 之间与 \(n\) 互质的数字个数。

考虑如何快速求出这个式子。

根据算数基本定理,对 \(n\) 进行质因数分解,\(n=p_1^{c_1}\times p_2^{c_2}\times p_3^{c_3}\times \dots \times p_m^{c_m}\)

假如 \(n\) 只有一个质因子 \(p\),则所有 \(1 \sim n\)\(p\) 的倍数都不与 \(n\) 互质,可得 \(\varphi(n)=n-\dfrac{n}{p}\)

假如 \(n\) 还有一个质因子 \(q\)\(\varphi(n)\) 还需要减去 \(\dfrac{n}{q}\),再加回被多减一次 \(p,q\) 共同的倍数个数 \(\dfrac{n}{pq}\) ,则:

\[\phi(n)=n-\dfrac{n}{p}-\dfrac{n}{q}+\dfrac{n}{pq}=n(1+\dfrac{1}{p}-\dfrac{1}{q}+\dfrac{1}{pq})=n(1-\dfrac{1}{p})(1-\dfrac{1}{q}) \]

推广到一般情况,可以推出:

\[\phi(n)=n\prod_\limits{i=1}^m(1-\dfrac{1}{p_i})=n\prod_\limits{i=1}^m(\dfrac{p_i-1}{p_i}) \]

特别地,\(\varphi(1)=1\)

从另外一个角度理解这个柿子:对于 \(n\) 的一个质因子 \(p\)\(p\) 的倍数在 \([1,n]\) 中的占比为 \(\dfrac{\frac{n}{p}}{n}=\dfrac{1}{p}\),则其余的数字占比为 \(1-\dfrac{1}{p}\)。对于所有与 \(n\) 互质的数字 \(i\),两者没有共同的质因子。则与 \(n\) 互质的数字占比为 \(\prod_\limits{i=1}^m(1-\dfrac{1}{p_i})\),乘上 \(n\) 即为 \(\varphi(n)\) 的值。

\(\varphi(n)\) 可以用质因数分解 \(O(\sqrt{n})\) 求出。

性质

  1. 对于 \(\forall n>1\),在 \([1,n]\) 之间与互质 \(n\) 的数字之和为 \(\dfrac{n\varphi(n)}{2}\)

    • 对于 \(\forall i\) 满足 \(i \perp n\)\(\gcd(i,n)=\gcd(n-i,n)=1\)。也就是说,在 \([1,n]\) 之间与互质 \(n\) 的数字是成对出现的。由于上面的 \(i,n-i\) 的平均数为 \(\dfrac{n}{2}\),这些数字之和即为 \(\dfrac{n\varphi(n)}{2}\)
  2. \(\varphi(n)\) 是积性函数。

    • 积性函数:若 \(a,b\) 互质,则 \(f(a)\times f(b)=f(ab)\)

    • 完全积性函数:对于 \(\forall a,b\in\mathbf{N_+}\)\(f(a)\times f(b)=f(ab)\)

    • 积性函数性质:对 \(n\) 进行唯一分解,\(n=\prod_\limits{i=1}^mp_i^{c_i}\),则有 \(f(n)=\prod_\limits{i=1}^m f(p_i)\)

    • 性质 2 证明:由于 \(a,b\) 互质,则 \(a,b\) 没有共同的质因子。对 \(a,b\) 进行唯一分解得 \(a=\prod_\limits{i=1}^{m_1} p_i^{c_i},b=\prod_\limits{i=1}^{m_2}q_i^{c_i},ab=(\prod_\limits{i=1}^{m_1} p_i^{c_i})(\prod_\limits{i=1}^{m_2} q_i^{c_i})\) 。则有 \(\varphi(ab)=ab[\prod_\limits{i=1}^{m_1}(\dfrac{p_i-1}{p_1})\prod_\limits{i=1}^{m_2}(\dfrac{q_i-1}{q_1})]=\varphi(a)\varphi(b)\)

  3. \(n=p^k\)\(p\) 是质数),则 \(\varphi(n)=p^k-p^{k-1}=p^{k-1}(p-1)\)

    • 由于 \(n\) 只有 \(p\) 一个质因子,则 \(1\sim n\) 之间与 \(n\) 不互质的数必定是 \(p\) 的倍数,这样的数共有 \(\dfrac{n}{p}=\dfrac{p^k}{p}=p^{k-1}\) 个。由此可得 \(\varphi(n)=n-p^{k-1}=p^k-p^{k-1}=p^{k-1}(p-1)\)
  4. \(p\) 为质数,且 \(p\mid n\),则 \(\varphi(np)=p\varphi(n)\)

    • 容易得出,若对 \(n\)\(np\) 分别做唯一分解,两个数的质因子集合相等。则有 \(\varphi(np)=np\prod_\limits{i=1}^m(\dfrac{p_i-1}{p_i})=p\varphi(n)\)
  5. \(p\) 为质数,且 \(p \nmid n\), 则 \(\varphi(np)=(p-1)\varphi(n)\)

    • 同样地,对 \(n\)\(np\) 分别做唯一分解,\(np\) 的质因子集合比 \(n\) 的质因子集合多了一个 \(p\)。若 \(n=\prod_\limits{i=1}^m p_i^{c_i}\),则 \(\varphi(np)=np(\prod_\limits{i=1}^m \dfrac{p_i-1}{p_i})\dfrac{p-1}{p}=\varphi(n)(p-1)\)
    • 从另外一个角度考虑,\(p,n\) 一定是互质的,那么 \(\varphi(np)=\varphi(n)\varphi(p)=\varphi(n)(p-1)\)
  6. \(n=\sum_\limits{d\mid n}\varphi(d)\),也就是 \(n\) 的所有约数的欧拉函数值之和为 \(n\)

    • \(f(n)=\sum_\limits{d|n} \varphi(d)\)

    • \(n\perp m\),有 \(f(nm)=\sum_\limits{d\mid nm}\varphi(d)\)。对 \(n,m,d\) 进行唯一分解,\(d\) 的质因子一部分来自于 \(n\),一部分来自于 \(m\),且两部分没有交集。则 \(\forall d=xy\),其中 \(x\mid n,y\mid m,x\perp y\)

      由此进一步得到:\(f(nm)=\sum_\limits{d\mid nm}\varphi(d)=\sum_\limits{d\mid nm}\varphi(x)\varphi(y)=(\sum_\limits{d|n} \varphi(d))(\sum_\limits{d|m} \varphi(d))=f(n)f(m)\),则 \(f(n)\) 也为积性函数。

      根据积性函数的性质,对 \(n\) 进行唯一分解,\(f(n)=\prod_\limits{i=1}^m f(p_i^{c_i})\)

      \(f(p^k)=\sum_\limits{i=0}^k \varphi(p^i)=1+\sum_\limits{i=1}^k (p^i-p^{i-1})=1-1+p-p+p^2-p^2+\dots+p^k=p^k\),则 \(f(n)=\prod_\limits{i=1}^m p_i^{c_i}=n\)

线性求欧拉函数

根据性质 4 与性质 5,在线性筛的基础上稍加修改即可。

void Solve(){
	phi[1]=1;
	for(int i=2;i<=n;i++){
		if(!vis[i]){
			prime.push_back(i);
			phi[i]=i-1;
		}
		for(int j:prime){
			if(i>n/j) break;
			if(i%j==0){
				phi[i*j]=phi[i]*j;
				vis[i*j]=1;
				break;
			}
			else{
				phi[i*j]=phi[i]*(j-1);
				vis[i*j]=1;
			}
		}
	}
}

Ex.4 GCD SUM

利用欧拉函数的性质化简柿子:

\[\begin{aligned} \sum_{i=1}^n \sum_{j=1}^n \gcd(i,j) &= \sum_{i=1}^n \sum_{j=1}^n \sum_{d\mid \gcd(i,j)} \varphi(d)\\ &=\sum_{i=1}^n \sum_{j=1}^n \sum_{d=1}^{n} \varphi(d)\,[d\mid i]\,[d \mid j]\\ &= \sum_{d=1}^n(\varphi(d)\sum_{i=1}^n\sum_{j=1}^n[d\mid i]\,[d\mid j])\\ &= \sum_{d=1}^n[\varphi(d)\sum_{i=1}^n([d\mid i]\ \sum_{j=1}^n[d\mid j])]\\ &= \sum_{d=1}^n \varphi(d) {\lfloor \dfrac{n}{d} \rfloor}^2 \end{aligned} \]

线性求出 \(1\sim n\) 的欧拉函数值即可。

这种技巧也被称为 欧拉反演

8.斐波那契与公约数

设斐波那契数列第 \(i\) 项为 \(f_i\)

\[f_i=\begin{cases}1 &(i\leq 2)\\f_{i-1}+f_{i-2} &(i>2)\end{cases} \]

Lemma 1

\[\gcd(f_i,f_{i+1})=1 \]

Proof 1

数学归纳法。当 \(i=1\) 时, \(\gcd(f_1,f_2)=\gcd(1,1)=1\)

\(f_k=a,f_{k+1}=b\),则有 \(f_{k+2}=a+b,f_{k+3}=a+2b\)

利用更相减损术,可得:

\[\gcd(a+b,a+2b)= \gcd(b,a+b)=\gcd(a,b) \]

于是我们得到

\[\gcd(f_i,f_{i+1})=\gcd(f_{i-1},f_{i}) \]

利用数学归纳,可以得到对于 \(i>1\)\(i\),也满足 \(\gcd(f_i,f_{i-1})=1\)。命题得证。

Lemma 2

\[\gcd(f_n,f_m)=f_{\gcd(n,m)} \]

Proof 2

不妨假设 \(n<m\)。设 \(f_n=a,f_{n+1}=b\),则 \(f_{m}=f_{m-n-1}a+f_{m-n}b=f_{m-n-1}f_n+f_{m-n}f_{n+1}\)

首先我们有

\[\gcd(kx+y,x)=\gcd((kx+y)\bmod x,x)=\gcd(x,y) \]

那么有

\[\gcd(f_n,f_m)=\gcd(f_{m-n-1}f_n+f_{m-n}f_{n+1},f_n) = \gcd(f_{m-n}f_{n+1},f_n) = \gcd(f_m,f_{m-n}) \]

类似于辗转相除法,可以得到 \(\gcd(f_n,f_m)=\gcd(f_{\gcd(n,m)},f_1)=f_{\gcd(n,m)}\)。命题得证。

9.阶乘的素数幂次

\(p \in \mathbb{Prime}\),则有:

\[v_p(n!)=\sum_{i>0} \lfloor\dfrac{n}{p^i} \rfloor \]

其中 \(v_p(x)\) 表示 \(x\) 中包含 \(p\) 的次数。

\(1\sim n\) 分开,\(v_p(n!)=\sum_{i=1}^n v_p(i)\)

\(1\sim n\) 中至少包含一个 \(p\) 的数字有 \(\lfloor \dfrac{n}{p} \rfloor\),统计进答案中。\(1 \sim n\) 中至少包含 \(2\)\(p\) 的数字有 \(\lfloor \dfrac{n}{p^2} \rfloor\) 个,但由于已经有一个 \(p\) 被统计过一遍,所以只需要再统计第 \(2\) 个质因子,答案加上 \(\lfloor\dfrac{n}{p^2}\rfloor\),系数为 \(1\)

我们从另一个角度来计算。用 \(p\) 进制表示 \(n\),则有 \(n=\sum a_ip^i(0\leq a_i<p)\)

\[v_p(n!)=\sum_{j\geq1} \lfloor\dfrac{\sum_{i\geq 0}a_ip^i}{p^j}\rfloor = \sum_{i \geq 0}\sum_{j\geq 1} a_i \lfloor p^{i-j}\rfloor =\sum_{i\geq 0}a_i\sum_{j=0}^{i-1}p^{j}=\sum_{i\geq 0}a_i \dfrac{p^i-1}{p-1}=\dfrac{n-s_p(n)}{p-1} \]

其中 \(s_p(n)\) 表示 \(n\)\(p\) 进制下各数位的数字之和。

10.Kummer 定理

\[v_p\left( \binom{n}{m} \right)=v_p\left(\dfrac{n!}{(n-m)!m!}\right)=v_p(n!)-v_p((n-m)!)-v_p(m!)=\dfrac{s_p(m)+s_p(n-m)-s_p(n)}{p-1} \]

\(p\) 进制下 \(n-m\)\(m\) 相加,结果为 \(n\)

设进位次数为 \(c\)。每进位一次,数位之和就会减少 \(p-1\),那么有

\[s_p(n-m)+s_p(m)-c(p-1)=s_p(n) \Rightarrow c=\dfrac{s_p(m)+s_p(n-m)-s_p(n)}{p-1} \]

于是得到 \(\binom{n}{m}\)\(p\) 的次数,就是 \(n-m\)\(m\)\(p\) 进制下相加进位次数。

同理可得, \(\binom{n}{m}\)\(p\) 的次数就是 $n $ 与 \(m\)\(p\) 进制下相减的借位次数。

\(\binom{n}{m}\) 在模 \(p\) 意义下为 \(0\),那么 \(n,m\)\(p\) 进制下相减时至少产生了一次借位。

换句话说,如果在 \(p\) 进制下存在一位,使得 \(n\) 在这一位的值小于 \(m\) 在这一位的值,那么 \(\binom{n}{m} \bmod p\) 一定为 \(0\)

由此可以快速判断 \(\binom{n}{m}\) 的奇偶性:设 \(n,m\) 在二进制下表示的集合为 \(S_n,S_m\)\(\binom{n}{m}\) 为奇数当且仅当 \(S_m \subseteq S_n\)

posted @ 2024-06-18 21:49  XP3301_Pipi  阅读(190)  评论(0)    收藏  举报
Title