把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

1.浅谈一些数论函数及其应用

1.浅谈一些数论函数及其应用

一些比较显然的东西

定义 \(\text{1.1}\):数论函数:一个函数 \(f\) 被称之为数论函数当且仅当其定义域为 \(\Z^+\),陪域为复数集。

定义 \(\text{1.2}\):积性函数:一个函数 \(f\) 被称之为积性函数当且仅当 \(∀a,b\in D,(a,b)=1\) 并满足 \(f(a)f(b)=f(ab)\)

引理 \(\text{1.1}\):数论分块:给定正整数 \(n\),对于任意的正整数 \(m\),则 \(\left\lfloor\frac{n}{m}\right\rfloor\) 的取值有 \(\mathcal{O}(\sqrt n)\) 种。

证明:分类 \(m\) 是否大于 \(\sqrt n\) 即可。

定理 \(\text{1.1}\):素数定理:\(\pi(x)\) 为不大于 \(x\) 的素数的个数,则有 \(\pi(x) =\mathcal{O}(\frac{x}{\ln x}).\)

证明略。

注意到完全积性函数就是不满足 \((a,b)=1\) 即可。

常见的函数

  • 单位函数:\(ε(n)=[n=1].\)
  • 常数函数:\(\text{1}(n)=1.\)
  • 幂函数:\(\text{Id}_k(n)=n^k.\)
  • 除数函数:\(\sigma_k(n)=\sum_{d|n}d^k.\)
  • 欧拉函数:\(\varphi(n)=\sum_{i=1}^n[\gcd(i,n)=1].\)
  • 莫比乌斯函数:\(\mu(n)=\left\{\begin{matrix} 1 & n=1\\ (-1)^k & n=p_1p_2\dots p_m\\ 0 & n\text{ can be divided by square number.} \end{matrix}\right.\)

详细解析函数

欧拉函数

我们假设所有的 \(p_i\in P\),其中 \(P\) 是素数集合。

我们慢慢来推。

引理 \(1\)\(n=p_x\),则 \(\varphi(n)=n-1.\)

证明:显然依照欧拉函数的定义不难发现只有当 \(i=n\) 的时候不满足 \(\gcd(i,n)=1\),故其他都满足,即 \(\varphi(n)=n-1.\)

引理 \(2\)\(n=p_x^k\),则 \(\varphi(n) = \varphi(p_x^k)=p_x^k-p_x^{k-1}.\)

证明:

同样依照式子:

\[\varphi(n)=\sum_{i=1}^n[\gcd(i,n)=1] \]

转换得到:

\[\varphi(p_x^k)=\sum_{i=1}^n[\gcd(i,p_x^k)=1] \]

注意到有:

\[\varphi(p_x^k)=p_x^k-\frac{p_x^k}{p_x}=p_x^k-p_x^{k-1} \]

这个式子的含义是总数减去是 \(p_x\) 的倍数的数。

引理 \(3\)\(n=p_{\alpha_1}^{\beta_1}\dots p_{\alpha_m}^{\beta_m}\),则 \(\varphi(n)=n\prod_{i=1}^m\left(1-\frac{1}{p_i}\right)=\prod_{i=1}^mp_{\alpha_i}^{\beta_i-1}\left(p_i-1\right).\)

证明:考虑用数学归纳法(参考陈景润的初等数论 \(2\))。

\(m=1\) 时,由引理 \(2\) 可以知道等式成立。

现在设 \(m\geq 2\),则不大于 \(n\)\(p_{\alpha_1}\) 的倍数是:

\[p_{\alpha_1},2p_{\alpha_1},\dots,\frac{n}{p_{\alpha_1}}p_{\alpha_1} \]

共有 \(\frac{n}{p_{\alpha_1}}\) 个,故不大于 \(n\) 而和 \(p_{\alpha_1}\) 互质的正整数共有

\[n-\frac{n}{p_{\alpha_1}}=n\left(1-\frac{1}{p_{\alpha_1}}\right) \]

个,不大于 \(n\)\(p_{\alpha_2}\) 的倍数个数也易得为 \(\frac{n}{p_{\alpha_2}}\),故互质的正整数共有 \(n\left(1-\frac{1}{p_{\alpha_2}}\right)\)

由于其中有重复的,不能直接相加,还需要减去不大于 \(n\)\(p_{\alpha_1}p_{\alpha_2}\) 的倍数,最后得到的等式成立。

一直推导,便可得到对于 \(m\geq 1\) 该等式成立。

引理 \(4\)引理 \(3\) 易得为积性函数。

引理 \(5\)\(a|b\)\(\varphi(ab)=a\varphi(b).\)

证明:拆解因子然后发现左边等于右边。

引理 \(6\)\(p\in P\),则 \(\varphi(n)=\left\{\begin{matrix}p\varphi(\frac{n}{p})&p|n,p^2\nmid n\\\varphi(p)\varphi(\frac{n}{p})&p^2| n\end{matrix}\right.\)

证明:将 \(p^2\nmid n\) 看作 \(p\nmid \frac{n}{p}\),就知道本质上和引理 \(5\) 一样。

引理 \(7\)(铺垫):\(p\in P\),则:\(1+\varphi(p)+\dots+\varphi(p^n)=p^n.\)

证明:

对于 \(n=1\) 显然成立。

现在设 \(n\geq 2\) 则有:

\[1+\varphi(p)+\dots+\varphi(p^n)=1+p-1+\dots p^{n-1}(p-1)=p^{n-1}+p^{n-1}(p-1)=p^n \]

综上,成立。

引理 \(8\)(欧拉函数反演):求证:\(\sum_{d|n}\varphi(d)=n.\)

证明(很完美的一个等式啊!):

\(n=p_1^{k_1}\dots p_{m}^{k_m}\),则:

\[\begin{align} \sum_{d|n}\varphi(d)&=\sum_{d_1|p_1^{k_1}}\dots\sum_{d_m|p_m^{k_m}}\varphi(d_1d_2\dots d_m) &&\\ &=\sum_{d_1|p_1^{k_1}}\dots\sum_{d_m|p_m^{k_m}}\varphi(d_1)\varphi(d_2)\dots\varphi(d_m) &&\\ &=\sum_{d_1|p_1^{k_1}}\varphi(d_1)\dots\sum_{d_m|p_m^{k_m}}\varphi(d_m) &&\\ &=p_1^{k_1}\dots p_m^{k_m} &&\\ &=n && \end{align} \]

真是气吞万里如虎啊,直接解决。

引理 \(9\)\(n>2\),则 \(\varphi(n)\) 必定是偶数。

证明:

分为两种情况:

  • \(n\) 不含有奇素因子,即 \(n=2^m,m\geq 2\)。由引理 \(7\) 得到:\(\varphi(n)=2^m-2^{m-1}=2^{m-1}\),故 \(\varphi(n)\) 为偶数。
  • \(n\) 含有奇素因子,设 \(p\)\(n\) 的一个奇素因子,则:\((p-1)|\varphi(n)\)(由引理 \(3\) 可以得到),又因为 \((p-1)\) 为偶数,故 \(\varphi(n)\) 为偶数。

综上所述,\(\varphi(n)\)\(n>2\) 的情况下必定是偶数。

引理 \(10\)\(n>1\),则不大于 \(n\) 且与 \(n\) 互质的所有正整数和是 \(\frac{1}{2}n·\varphi(n)\)。换言之,即证明:

\[\sum_{i=1}^n[\gcd(i,n)=1]\times i=\frac{1}{2}n·\varphi(n) \]

证明:

\(n=2\),则 \(\varphi(n)=\varphi(2)=1\),所以:

\[\frac{1}{2}n\varphi(n)=\frac{1}{2}\times 2\times 1=1 \]

显然满足上述等式。

现在假定 \(n>2\),不大于 \(n\) 且与 \(n\) 互质的正整数有 \(\varphi(n)\) 个,显然它们都小于 \(n\),由引理 \(9\) 可知,\(\varphi(n)\) 为偶数。

假如 \(m\) 为其中的一个数,即 \(0<m<n,(n,m)=1\),那么显然有 \((n-m,n)=1\),且 \(0<n-m<n\),即 \(n-m\) 也是这 \(\varphi(n)\) 个数中的一个,而且 \(n-m\ne m\)。因此可以把不大于 \(n\) 且与 \(n\) 互质的数分成 \(\frac{1}{2}\varphi(n)\) 组(是偶数),每组包含两个数,并且它们的和全部为 \(n\),所以就可以得到它们的和为:\(n\times \frac{1}{2}\varphi(n).\)

引理 \(11\)求证:\(\sqrt n \leq \varphi(n)\leq n-1\),其中 \(\varphi(n)\geq \sqrt n\) 当且仅当 \(n\geq 7\) 成立。但是可以保证的是:$\varphi(n)\leq \lfloor\sqrt n\rfloor $

证明:

首先 \(n\mid n\),故至多为 \(n-1\) 个与其互质的数。

  • \(1.\) \(n\) 为质数的情况

\(n = p\) 是一个质数,故 \(\varphi(p) = p - 1.\)
要证明:\(p - 1 \ge \sqrt{p}.\)
对于 \(p ≥ 3\)

  • 随着 \(p\) 增大,\(p - 1\)\(\sqrt p\) 之间的差距越来越大,从而不等式成立。

因此,除 \(n = 2\) 这个例外外,质数情况下不等式成立。

  • \(2.\) \(n\) 为合数的情况

\(n = p_1^{a_1} p_2^{a_2} ⋯ p_k^{a_k}\),利用乘积公式

\[\varphi(n) = n \prod_{i=1}^{k}\left(1-\frac{1}{p_i}\right). \]

注意最不利情况通常出现在 \(n\) 有较多小的素因子(使得乘积 \(∏ (1-1/p)\) 较小)。例如,\(n = 6 = 2×3\) 就是极端情形之一,其结果 \(φ(6)=2\) 小于 \(\sqrt 6 ≈ 2.45\)。所以对于 \(n = 6\),不等式不成立。但当 \(n\) 增大到一定程度(例如 \(n ≥ 7\)),受限于质因数的分布,这个乘积不至于太小,从而使得

\[\prod{i=1}^{k}\left(1-\frac{1}{p_i}\right) \ge \frac{1}{\sqrt{n}} \]

成立。

一种证明方法是:

  • 估计乘积
    对于 \(n\)\(k\) 个不同的素因子,最小情况发生在选取最小的前 \(k\) 个素数。定义

    \[P(k) = \prod_{i=1}^{k}\left(1-\frac{1}{p_i}\right) \quad \text{和} \quad N(k) = \prod_{i=1}^{k} p_i. \]

    由于 \(n ≥ N(k)\),那么有

    \[\frac{1}{\sqrt{n}} \le \frac{1}{\sqrt{N(k)}}. \]

    因此,只需证明对于所有 \(k\)(对应于 \(n ≥ 7\)\(k ≥ 1\)\(2\))的情况都有

    \[P(k) \ge \frac{1}{\sqrt{N(k)}}. \]

  • 利用数值估计
    \(k=1\):

    • 最小素数 \(p_1 = 2\),此时

      \[P(1)=1-\frac{1}{2}=\frac{1}{2}, \quad N(1)=2, \quad \frac{1}{\sqrt{2}} \approx 0.707. 显然, (\frac{1}{2} < 0.707);但这对应于 n=2(已为例外)。 \]

    \(k=2\):

    • \(p_1 = 2, p_2 = 3\),此时

    \[ P(2)=\left(1-\frac{1}{2}\right)\left(1-\frac{1}{3}\right)=\frac{1}{2}\cdot\frac{2}{3}=\frac{1}{3}, \quad N(2)=6,\quad \frac{1}{\sqrt{6}}\approx 0.408. \]

    我们有 (\(\frac{1}{3}\approx 0.333 < 0.408\)),这正是 \(n = 6\) 的例子,不成立。

    \(k=2\)\(n > 6\)

    • 如果 \(n\) 在拥有 \(2\) 个不同质因子时比 \(6\) 更大(例如 \(n = 10 = 2×5, n = 14 = 2×7\) 等),由于较大的素数使得 \(∏ (1-1/p)\) 更大时,能使得不等式恢复成立。

    对更大 \(k\) 的情况,通过估计和渐进公式可证明,当 \(n\) 足够大(或 n ≥ 7 且排除极端例子如 n=6)时,不等式 \(φ(n) ≥ \sqrt n\) 成立。


结论

综上,对于 \(n ≥ 7\)(以及除去 \(n = 2,6\) 这类极端小的情况),可以证明:

\[\varphi(n) \ge \sqrt{n}. \]

证明主要依赖于欧拉函数的乘积公式以及对不同组成情况的讨论。具体证明的严格性可能需要更精细的数理分析或不等式估计,但基本思路如上所述。

引理 \(12\)

\[\sum_{n\leq x}\varphi(n)=\frac{3}{\pi^2}x ^ 2 + O(x\log x) \]

上述表明了 \(\varphi(n)\) 的和与 \(x^2\) 成比例。而另外一个事实就是:

\[\frac{1}{x}\sum_{n \leq x} \frac{\varphi(n)}{n} \to \frac{6}{\pi^2} \quad \text{当 } x \to \infty. \]

引理 \(13\)有:

\[\varphi(n)=n\sum_{d\mid n}\frac{\mu(d)}{d} \]

这个留个坑,讲 \(\mu(n)\) 的时候在证明。

关于欧拉函数的

欧拉定理

\[a^{\varphi(m)}\equiv 1(\bmod m) \]

显然成立。

扩展欧拉定理

\[a^b=\left\{\begin{matrix} a^{b\mod \varphi(m)} & (a,m)=1\\ a^{b} &(a,m)\ne 1,b<\varphi(m) \\ a^{b\mod \varphi(m)+\varphi(m)} &(a,m)\ne 1,b\geq \varphi(m) \end{matrix}\right. \]

你猜为什么显然成立。

例题

P1891 疯狂 LCM

给定 \(n\) 求:

\[\sum_{i=1}^ n\text{lcm}(i,n) \]

其中 \(T(1\leq T\leq 3\times 10^5),n(1\leq n\leq 10^6).\)

思路

直接暴力 \(\mathcal{O}(Tn\log n)\),即可得到以下代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <stdlib.h>
#include <cstring>
#include <vector>
#define int long long
#define N 1000006
using namespace std;
int ans = 0;
int gcd(int a,int b) {
	return b ? gcd(b,a % b) : a;
}
signed main(){
	int T;
	cin >> T;
	for (;T--;) {
		int x;
		scanf("%lld",&x);
		int res = 0;
		for (int i = 1;i <= x;i ++) res += i / gcd(i,x);
		printf("%lld\n",x * res);
	}
	return 0;
}

显然地:

\[ans=n\sum_{i=1}^n \frac{i}{\gcd(i,n)} \]

这在我们的代码是有体现的。

我们分为两种情况:

  • \(\gcd(i,n)=1\),此时贡献为 \(i\)
  • \(\gcd(i,w)=w\),这个之后考虑。

对于第一种情况,直接:

\[ans_1=\sum_{i=1}^n i[\gcd(i,n)=1]=\frac{1}{2}n\times \varphi(n) \]

接下来考虑第二种情况:

\[\begin{align} ans_2=&\sum_{i=1}^n\sum_{w=2}^i \frac{i}{w}[\gcd(i,n)=w]&\\ =&\sum_{w\mid n}^n\frac{1}{w}\sum_{i=w}^ni[\gcd(i,n)=w]\\ =&\sum_{w\mid n}^n\frac{1}{w}\sum_{i=1}^{\lfloor\frac{n}{w}\rfloor}iw[\gcd(i,\lfloor\frac{n}{w}\rfloor)=1]\\ =&\sum_{w\mid n}^n\sum_{i=1}^{\lfloor\frac{n}{w}\rfloor}i[\gcd(i,\lfloor\frac{n}{w}\rfloor)=1]\\ =&\sum_{w\mid n}^n\frac{1}{2}\lfloor\frac{n}{w}\rfloor\times \varphi(\lfloor\frac{n}{w}\rfloor)\\ =&\frac{1}{2}\sum_{w\mid n}^n\lfloor\frac{n}{w}\rfloor\times \varphi(\lfloor\frac{n}{w}\rfloor) \end{align} \]

这样的类似式子直接预处理即可。

代码如下:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <stdlib.h>
#include <cstring>
#include <vector>
#define int long long
#define N 1000006
using namespace std;
int gcd(int a,int b) {
	return b ? gcd(b,a % b) : a;
}
int prime[N],cnt,phi[N],ans[N],p[N];
bool vis[N];
void init(int n){
	vis[1] = 1;
	phi[1] = 1;
	for (int i = 2;i <= n;i ++) {
		if (!vis[i]) vis[i] = 1,phi[i] = i - 1,prime[++cnt] = i;
		for (int j = 1;j <= cnt && prime[j] * i <= n;j ++) {
			vis[prime[j] * i] = 1;
			if (i % prime[j] == 0) {
				phi[i * prime[j]] = prime[j] * phi[i];
				p[i * prime[j]] = j;
				break;
			}
			phi[i * prime[j]] = phi[prime[j]] * phi[i];
		}
	}
	for (int i = 1;i <= n;i ++) {
		for (int j = 1;i * j <= n;j ++)
			ans[i * j] += (i == 1 ? 1 : i * phi[i] / 2);
	}
}
signed main(){
	int T;
	cin >> T;
	init(1e6);
//	for (int i = 1;i <= 100;i ++) printf("phi[%lld]: %lld\n",i,phi[i]);
	for (;T--;) {
		int x;
		scanf("%lld",&x);
//		for (int l = 1,r;l <= x;l = r + 1) {
//			r = x / (x / l);
//			if (x / l != 1) res += (r - l + 1) * (x / l) * phi[x / l] / 2;
//		}
		printf("%lld\n",x * ans[x]);
	}
	return 0;
}

莫比乌斯函数

另外的定义(本质上一样):

\[\mu(n)=\left\{\begin{matrix} 1 &n=1 \\ (-1)^r & n\text{ 是 $r$ 个不同的素数的乘积时}\\ 0 &n\text{ 能被一个素数的平方除尽时} \end{matrix}\right. \]

这个函数原理上是用来容斥原理。

posted @ 2025-03-02 22:31  high_skyy  阅读(39)  评论(0)    收藏  举报
浏览器标题切换
浏览器标题切换end