首页 > 其他分享 >数论函数基础

数论函数基础

时间:2024-07-22 20:10:38浏览次数:8  
标签:函数 数论 sum 基础 mid 积性 aligned 加性

数论函数基础

数论函数是数论中相当重要的一环,我们先来将*一些基本的函数 —— \(\color {black} \textsf {H} \color {red} \textsf {\_W\_Y}\)

* : 同 “讲”,讲述

全文 绝大多数 内容是对 [0] 中讲述的 粗略抄写胡乱加工

关于 加性函数积性函数 的部分,参考 [3]


1. 一些定义与性质

分类

  • 数论函数

    定义域(全体)正整数 的函数,因其在 所有正整数 处均有定义,故可以视作 数列

    一般 \(OI\) 中的 数论函数陪域* 为 整数

    * : 指 可能的取值范围,并不代表 实际上函数的取值范围(值域)

    但显然,一个函数的 值域 被其 陪域 包含 [1]

  • 加性函数

    若 \(\forall a, b \in N ^ *, a \perp b\),有 \(f (ab) = f (a) + f (b)\),则称 \(f\) 为 加性函数,如 本质不同质因数个数


    性质式

    \[\begin {aligned} f \left ( \prod p_i ^ {c_i} \right ) &= \sum f (p_i ^ {c_i}) \end {aligned} \]

    判定时,先证明 \(f (1) = 0\),然后 根据定义判定

    此处指(数论)加性函数 \(Additive ~ Function\)(下文 加性函数 默认指代对象)

    应当与(代数)加性函数 \(Additive ~ Map\) 区分 [4]

    容易发现,由于 \(f (1 \times 1) = f (1) + f (1)\),有 \(f (1) = 0\),为 数论加性函数必要条件

    后者满足 柯西方程 [2],即 \(f (x + y) = f(x) + f (y)\),且 定义域有理数

  • 完全加性函数

    若 \(\forall a, b \in N ^ *\),有 \(f (ab) = f (a) + f (b)\),则称 \(f\) 为 完全加性函数,如 总质因数个数


    性质式

    \[\begin {aligned} f \left ( \prod p_i ^ {c_i} \right ) &= \sum f (p_i ^ {c_i}) = \sum (c_i \cdot f (p_i)) \end {aligned} \]

    判定时,先证明 \(f (1) = 0\),然后证明 \(\forall p' \in \mathbb P\),有 \(f (p') + f (a) = f (ap')\) 即可

    无需单独证明其为 加性函数

    容易发现,任意 \(b\) 均可以 质因数分解质数,故也无须证明 \(f (a) + f (b) = f (ab)\)

  • 积性函数

    若 \(\forall a, b \in N ^ *, a \perp b\),有 \(f (ab) = f (a) f (b)\),则称 \(f\) 为 积性函数,如 欧拉函数 \(\varphi\)


    性质式

    \[\begin {aligned} f \left ( \prod p_i ^ {c_i} \right ) &= \prod f (p_i ^ {c_i}) \end {aligned} \]

    若一个函数是 积性函数,则其 求和函数 也是 积性函数(如 因数个数 / 因数和 函数)

    判定时,先证明 \(f (1) = 1\),然后 根据定义判定

    容易发现,\(f (1) = 1\) 是 积性函数必要条件

    同时,我们一般 常值为 \(0\) 的函数 视作积性函数

  • 完全积性函数

    若 \(\forall a, b \in N ^ *\),有 \(f (ab) = f (a) + f (b)\),则称 \(f\) 为 完全积性函数,如 幂函数 \(Id_k\)


    性质式

    \[\begin {aligned} f \left ( \prod p_i ^ {c_i} \right ) &= \prod f (p_i ^ {c_i}) = \prod f (p_i) ^ {c_i} \end {aligned} \]

    判定时,先证明 \(f(1) = 1\),然后证明 \(\forall p' \in \mathbb P\),有 \(f (p')f(a) = f(ap')\) 即可

加性函数积性函数 的 转化

若 \(f\) 为 加性函数,而 函数 \(g\) 满足 \(g (x) = C ^ {f (x)}\),其中 \(C\) 为 常数

容易发现 \(g (1) = C ^ {f (1)} = C ^ 0 = 1\)

又 \(a \perp b\) 时,\(g (a) g (b) = C ^ {f (a)} \times C ^ {f (b)} = C ^ {f (a) + f (b)} = C ^ {f (ab)} = g (ab)\)

故 \(g\) 为 积性函数,同理,当 \(f\) 为 完全加性函数 时,\(g\) 为 完全积性函数


运算

  • 数论函数的 加法

    对于 数论函数 \(f, g\),\(f + g\) 是 \(f, g\) 各个位置相加 的表示,$ (f + g) (x) = f (x) + g (x)$

  • 数论函数的 数乘

    对于 数 \(c\)数论函数 \(f\),\(c \cdot f\) 表示 \(f\) 的 各个位置 乘 \(c\),也作 \(cf\),有 \((c\cdot f)(x) = c \cdot f (x)\)

  • 数论函数的 点乘

    对于 数论函数 \(f, g\),\(f \cdot g\) 是 \(f, g\) 各个位置相乘 的表示,\((f \cdot g) (x) = f (x) g (x)\)

    为与 狄利克雷卷积 符号 \(*\) 区分,点乘符号 通常 不省略


2. 常见函数,分类及证明

  • 单位函数*:\(\epsilon (n) = [n = 1]\)

    判断 \(n\) 是否为 \(1\),又被称为 元函数完全积性函数

    证明显然

  • 常数函数*:\(I(n) = 1\)

    无论 \(n\) 取值,函数恒为 \(1\),完全积性函数

    证明显然

  • 幂函数,恒等函数*:\(\operatorname {id}_k (n) = n ^ k\)

    当 \(k = 1\) 时,也记作 \(\operatorname {id} (n)\),完全积性函数

    证明显然

    * : 注意,许多博客中称 \(I(n)\) 为 恒等函数,而称 \(\operatorname {id} (n)\) 为 单位函数

    但与 \(Wiki\) 等百科定义 不符,故此处 不采用这种用法

  • 除数函数:\(\sigma_k (n) = \sum _ {d \mid n} d ^ k\)

    \(\sigma_0 (n)\) 表示 \(n\) 的 约数个数,又记作 \(\tau (n)\) 或 \(d (n)\),\(\sigma_1 (n)\) 表示 \(n\) 的 约数和,又记作 \(\sigma (n)\)

    有计算式

    \[\begin {aligned} \sigma_k (n) = \begin {cases} \prod (c_i + 1) & k = 0 \\ \prod { \frac {p_i ^ {(c_i + 1)k} - 1} {p_i - 1} } & k > 0 \end {cases} \end {aligned} \]

    根据乘法分配律,有 \(\sigma _ k (n) = \prod \sum _ {j = 0} ^ {c_i} p_i ^ {jk}\),等比数列求和 即可得到上式

    积性函数

    证明

    显然有 \(\sigma_k (1) = 1 ^ k = 1\),当 \(a \perp b\) 时

    \[\begin {aligned} \sigma _k (a) \sigma _k (b) &= \sum \limits _ {d_1 \mid a} d_1 ^ k \sum \limits _ {d_2 \mid b} d_2 ^ k \\ &= \sum \limits _ {d_1 \mid a} \sum \limits _ {d_2 \mid b} d_1 ^ k d_2 ^ k \\ &= \sum \limits _ {d_1 \mid a} \sum \limits _ {d_2 \mid b} (d_1 d_2) ^ k \\ &= \sum \limits _ {d \mid ab} d ^ k \\ &= \sigma _k (ab) \end {aligned} \]

    下指标 由 \(d_1 \mid a, d_2 \mid b\) 到 \(d \mid ab\) 的这一步显然只有 \(a \perp b\) 时 满足

    可以将其 唯一分解 后证明

  • 欧拉函数:\(\varphi (n) = \sum \limits _ {i = 1} ^ n [i \perp n]\)

    即 \(n\) 以内与 \(n\) 互质的数个数积性函数

    证明

    显然有 \(\varphi (1) = 1\),我们知道,当 \(a \perp k, b \perp k\) 时,一定有 \(ab \perp k\)

    由于 \(a \perp b\),我们认为 \(ib + k ~ (i \in [0, a - 1])\) 将构成 \(a\) 的 完全剩余系

    即 \(ib + k\) 模 \(a\) 后能得到 \(a\) 的 每一种余数,反证法容易得到,前文中也有提及

    故我们构建一个 \(a \times b\) 的 矩阵

    \[\begin {array} {ccccc} 1 & 2 & 3 & \cdots & b \\ b + 1 & b + 2 & b + 3 & \cdots & 2b \\ 2b + 1 & 2b + 2 & 2b + 3 & \cdots & 3b \\ &&\cdots&& \\ (a - 1)b + 1 & (a - 1)b + 2 & (a - 1)b + 3 & \cdots & ab \end {array} \]

    显然我们可以找到 \(\varphi (b)\) 与 \(b\) 互质的数

    (\(r \perp b\) 则 \(kb + r \perp b\),故只需 第一行的数与 \(b\) 互质,则后面对应列的数一定与 \(b\) 互质)

    同时 每一列都是 \(n\) 的完全剩余系,故 每一列有 \(\varphi (a)\) 个与 \(a\) 互质的数

    于是有 \(\varphi (a) \varphi (b)\) 个数 与 \(a, b\) 均互质,则有 \(\varphi (a) \varphi (b)\) 个数与 \(ab\) 互质

    故有 \(\varphi (a) \varphi (b) = \varphi (ab)\),即 积性函数 性质得证


    我们也可以通过 容斥 得到 \(\varphi (n)\) 的 计算式

    \[\varphi (n) = n \prod (1 - \dfrac 1 {p_i}) \]

    可以感性理解成 对于 \(n\) 的每个质因子 \(p_i\),\(1 \sim n\) 中有 \(n (1 - \dfrac 1 {p_i})\) 个数 不被其整除

    即 这些数与 \(n\) 没有 \(p_i\) 这个公因数,对于剩下的数,继续考虑其被 \(p_{i + 1}\) 整除的可能

    从而

    \[\begin {aligned} \varphi (n) \varphi (m) &= n \prod (1 - \dfrac 1 {p_i}) \times m \prod (1 - \dfrac 1 {p_j}) \\ &= nm \prod (1 - \dfrac 1 {p'_i}) \\ &= \varphi (nm) \end {aligned} \]

  • 本质不同质因子个数:\(\omega (n) = \sum _ {p \in \mathbb P} [p \mid n]\)

    加性函数

    证明

    显然 \(\omega (1) = \sum _ {p \in \mathbb P} [p \mid 1] = 0\)

    \[\begin {aligned} a = \prod _ {i = 1} ^ {n} p_i , b = \prod _ {i = 1} ^ {m} q_i \end {aligned} \]

    若 \(\forall p_i ~ (p_i \in \mathbb P, p_i \mid a), p_i \in P\),同理 \(q_i \in Q\)

    由于 \(a \perp b\),则 \(P \cap Q = \varnothing\),故 \(|P| + |Q| = |P + Q|\)

    显然,\(ab\) 分解后的 质因数集合 即为 \(P + Q\),而 集合大小 就是 \(\omega\) 的值

    故有 \(\omega (a) + \omega (b) = \omega (ab)\) 得证

  • 莫比乌斯函数:\(\mu (n)\)

    \[\begin {aligned} \mu (n) = \begin {cases} 1 & n = 1 \\ 0 & \exist d > 1, d ^ 2 \mid n \\ (-1) ^ {\omega (n)} & \operatorname {otherwise} \end {cases} \end {aligned} \]

    \(\sum _ {d \mid n} \mu (d) = [n = 1]\) [5]

    显然,\(n = 1\) 时,\(\sum _ {d \mid n} \mu (d) = 1\),否则设 \(n = \prod _ {i = 1} ^ {m} p_i ^ {c_i}\),\(d = \prod _ {i = 1} ^ m p_i ^ {x_i}\)

    由定义,我们知道当 \(d\) 有 平方因子 时,\(\mu (d) = 0\),即 不做贡献

    故我们只需要考虑 \(x_i \in \{0, 1\}\) 的 \(2 ^ m\) 种情况,设 \(d\) 存在 \(r\) 个 \(x_i\) 为 \(1\),则

    \[\begin {aligned} \sum _{d \mid n} \mu (d) &= \sum _ {r = 0} ^ m {m \choose r} (-1) ^ r & (n \neq 1) \end {aligned} \]

    注意到 二项式定理

    \[(x + y) ^ n = \sum _ {k= 0} ^ n {n \choose k} x ^ {n - k} y ^ k \]

    容易发现,当 \(n = m, x = 1, y = -1\) 时,下式即 上式右半部分,于是

    \[\begin {aligned} \sum _{d \mid n} \mu (d) &= (1 + (-1)) ^ m = 0 \end {aligned} \]

    结束

    于是显然有 \(\sum _ {d \mid \gcd (i, j)} \mu (d) = [\gcd (i, j) = 1]\)

    积性函数

    证明

    显然 \(\mu (1) = 1\),且若 \(a, b\) 有 等于 \(1\) 的,容易证明 \(\mu (a) \mu (b) = \mu (ab)\)

    显然,若 \(a, b\) 中 有 满足 \(\exist d > 1, d ^ 2 \mid x\),则 \(ab\) 一定满足此条件

    故 \(\mu (ab) = \mu (a) \mu (b) = 0\),同样易得

    只需考虑 \(a, b\) 均为 最后一种情况 的情形

    容易发现,\(\omega (n)\) 是 加性函数,而 \(-1\) 为 常数,此形式符合 上文中提到的

    加性函数积性函数 的 转化 的式子形式,故 \(\mu (n)\) 一定是 积性函数,得证

  • 总质因数个数:\(\Omega (n) = \sum _ {p \in \mathbb P} \sum _ {c \ge 1} [p ^ c \mid n]\)

    完全加性函数

    证明(可以回顾 完全加性函数的判定,与 加性函数 / 积性函数 的判断有所不同)

    先转化一下,有 \(\Omega (n) = \sum _ {d \in \Z} [d \mid n] = \sum _ {p \in \mathbb P} \sum _ {c \ge 1} [p ^ c \mid n]\)

    显然有 \(\Omega (1) = 0\),又由于 \(p_i \in \mathbb P\),故易得 \(\Omega (p_i) = 1\),然后颓狮子

    \[\begin {aligned} \Omega (np_i) &= \sum _ {p \in \mathbb P} { \sum _ {c \ge 1} { [p ^ c \mid np_i] } } \\ &= \sum _ { p \in \mathbb P \and p \neq p_i } { \sum _ {c \ge 1} { [p ^ c \mid np_i] } } + \sum _ { c \ge 1 } { [p_i ^ c \mid np_i] } \\ &= \sum _ { p \in \mathbb P \and p \neq p_i } { \sum _ {c \ge 1} { [p ^ c \mid n] } } + \sum _ { c \ge 1 } { [p_i ^ c \mid np_i] } \\ &= \sum _ { p \in \mathbb P \and p \neq p_i } { \sum _ {c \ge 1} { [p ^ c \mid n] } } + \sum _ { c \ge 1 } { [p_i ^ c \mid n] } +1 \\ &= \sum _ {p \in \mathbb P} { \sum _ {c \ge 1} { [p ^ c \mid n] } } + 1 \\ &= \Omega (n) + \Omega (p_i) \end {aligned} \]

    故得证,该函数为 完全加性函数

    同理可知,总质因数和:\(\Omega (n) = \sum _ {p \in \mathbb P} \sum _ {c \ge 1} p ^ c \times [p ^ c \mid n]\) 也是 完全加性函数

  • 模意义下的乘法逆元:\(n ^ {-1} \pmod p\)

    完全积性函数(\(p \in \mathbb P\))

    根据 余数的可乘性 即可证明,前面 同余关系 章节中应有 相关应用

    更形式化的,显然有 \(a ^ {-1} b ^ {-1} = (ab) ^ {-1} \pmod p\),并不要求 \(a \perp b\)

  • 刘维尔函数:\(\lambda (n) = (-1) ^ {\Omega (n)}\)

    完全积性函数

    上文知,\(\Omega (n)\) 是 完全加性函数,然后根据 加性函数积性函数 的 转化 即可得


3. 线性筛积性函数

前面的 素数 部分,线性筛(欧拉筛) 筛素数的算法

提供了一个 线性筛特殊性质积性函数 在 \([1, n]\) 处 所有取值 的 基本框架

只要 积性函数 \(f\) 可以在 \(O (1)\) 时间计算 任意质数幂 处的取值 \(f (p ^ k)\),就适用 这个框架

这是一个 充分不必要 条件,有弱化条件,如 \(O (k)\) 计算 \(f (p ^ k)\) 也可以,但此处暂不提

bool Vis[MAXN];
int Pri[MAXN];
inline void Prime () {
	for (int i = 2; i <= N; ++ i) {
		if (!Vis[i]) Pri[++ Cnt] = 0;
		for (int j = 1; Pri[j] * i <= N && j <= Cnt; ++ j) {
			Vis[i * Pri[j]] = 1; 
			if (i % Pri[j] == 0) break ;
		}
	}
}

先来考虑 上述的线性筛 框架,容易发现 \(Pri_i\) 显然与 \(i\) 互质

于是我们可以在 标记 \(Vis\) 这一部分 算出对应的值

唯一的特例是 枚举到 \(i\) 的 最小质因数(即 \(i \bmod Pri_j = 0\))时,此时不满足 \(i \perp Pri_j\)

我们需要把 \(i\) 除尽 其最小质因数,得到 \(i'\),显然 \(i' \perp Pri_i\),于是就可以算了

但是如果每次在 \(i \bmod Pri_j = 0\) 时再来除的话,时间复杂度就会假

所以我们需要在过程中 预处理每个数 \(i\) 的 最小质因子 \(p_i\) 的 最高次幂(\(\max p_i ^ c\))

最后就得到了 下面的代码框架

inline void Sieve () {
	for (int i = 2; i <= N; ++ i) {
		if (!Vis[i]) Pri[++ Cnt] = i, F[i] = /* NOTE */, Low[i] = i;
		for (int j = 1; j <= Cnt && Pri[j] * i <= N; ++ j) {
			Vis[i * Pri[j]] = 1;
			if (i % Pri[j] == 0) {
				Low[i * Pri[j]] = Low[i] * Pri[j];
				if (i == Low[i]) F[i * Pri[j]] = /* NOTE */ // F[i = p_j ^ k] -> F[i * p_j = p_j ^ (k + 1)]
				else F[i * Pri[j]] = F[i / Low[i]] * F[Low[i * Pri[j]]];
				break ;
			}
			Low[i * Pri[i]] = Pri[j], F[i * Pri[j]] = F[i] * F[Pri[j]];
		}
	}
}

4. 引用资料

[0] Number Theory —— H_W_Y

[1] 定义域、值域和陪域 —— 数学乐

[2] 柯西方程 —— 百度百科

[3] 【数学】加性函数与积性函数 —— mango09(好得很的介绍)

[4] 数论 - 数论基础 - 积性函数 —— OI Wiki

[5] 莫比乌斯反演简要笔记 —— Sengxian

标签:函数,数论,sum,基础,mid,积性,aligned,加性
From: https://www.cnblogs.com/FAKUMARER/p/18316766

相关文章

  • python函数基础详解
    1.函数的目的在python中使用函数可以减少重复代码,提复用率,目的为了封装一定的功能,比如print封装了打印输出的功能。2.函数的定义是我们在编写程序的时候,临时创建一个新的函数,一个可以重复使用函数的过程,一个简单的函数定义包括,函数名,形参和实参,返回以及调用。3.函数的声明......
  • 《0基础》学习Python——第二十四讲__爬虫/<7>深度爬取
    一、深度爬取        深度爬取是指在网络爬虫中,获取网页上的所有链接并递归地访问这些链接,以获取更深层次的页面数据。        通常,一个简单的爬虫只会获取到初始页面上的链接,并不会进一步访问这些链接上的其他页面。而深度爬取则会不断地获取链接,并继续访问......
  • 【Golang 面试基础题】每日 5 题(三)
    ✍个人博客:Pandaconda-CSDN博客......
  • 附加篇 函数经典模块
    1.open函数使用 在Python中,open()函数用于打开文件,并返回一个文件对象,可以用于读取或写入文件。f=open("./44.函数的参数.py",mode='r',encoding="utf8")#是否可读#print(f.readable(),f.writable())#读取整个文件返回字符串content=f.read()print(cont......
  • 特别篇 函数基础
    1.函数目的 函数的主要目的是提高代码的模块性和重用性。defadd_numbers(a,b):"""Thisfunctiontakestwonumbersasinputandreturnstheirsum."""returna+b#调用函数并打印结果result=add_numbers(3,5)print("Thesumof3and5......
  • PTA基础题
    6-3简单求和分数10全屏浏览切换布局作者 陈越单位 浙江大学本题要求实现一个函数,求给定的N个整数的和。函数接口定义:intSum(intList[],intN);其中给定整数存放在数组List[]中,正整数N是数组元素个数。该函数须返回N个List[]元素的和。裁判测试程序样例:......
  • c++零基础知识要点整理(7)
    *请搭配c++零基础知识要点整理(5)使用位或运算符的应用: | (有1即1)1.设置标记位(使某一个位置的值变为1)inta=0b101101;//(以使第五位变为1举例,即使a变为:0b11101)cout<<(a|0b10000)<<endl;//要使第五个位置的值变为1,则将这个数和0b10000进行位或//以此类推:需要使第四个......
  • Python学习—函数篇 面面俱到,细致讲解
    目录1.函数目的2.函数定义3.函数的调用4.函数的形参,实参5.函数的返回值1.返回一个值2.返回多个值3.没有返回值4.返回None6.函数的参数类型1.必需参数2.关键字参数3.默认参数4.可变参数5.关键字可变参数7.匿名函数基本语法示例1.函数目的在编程中,定......
  • ##笔记day06-C语言基础:随机数、一维、二维数组、字符数组
    day07笔记1)rand生成随机数1)rand()随机函数头文件:#include<stdlib.h>函数原型:intrand(void);函数功能:生成大于等于0的随机整数参数:void返回值:生成的随机整数2)srand更新随机数种子(srand()函数用于给rand()函数设定种子)头文件:......
  • EXCEL初级入门--(第四章 函数进阶学习)-中
    文章目录(十四)MatchVlookup应用对比Match(十五)IndexMatch多条件应用案例Index(十六)IndexMatch数组嵌套IndexMatch(十七)唯一Subtotal唯一的筛选函数Subtotal(十八)Sumproduct函数应用Sumproduct(十九)条件求和函数1、sum2、sumif3、sumifs(二十)条件计......