首页 > 其他分享 >数论相关

数论相关

时间:2024-08-16 21:16:41浏览次数:5  
标签:frac 数论 sum sqrt mu varphi otimes 相关

数论相关

积性函数

推论1:积性函数 \(f\) 一定满足 \(f(1) = 1\)。

推论2:通过质数点值可以唯一确定完全积性函数,因为质数可以组成所有的数;通过所有 \(p^k\) 处的点值可以唯一确定积性函数,因为积性函数有前置条件 \(n \bot m\) 所以要组合出有多个质因子 \(p\) 的数就需要 \(p^k\) 处的点值。

Dirchlet 卷积

\[(f \otimes g)(n) = \sum_{xy = n} f(x)f(y) \]

Dirchlet 卷积有类似于乘法的性质:

  1. 交换律

  2. 结合律

  3. 单位元,即 $ \epsilon(n) = [n = 1]$。

  4. 两个积性函数的 Dirchlet 卷积依旧是积性函数。

  5. 积性函数的 Dirchlet 逆依旧是积性函数。

计算

Dirchlet卷积可以直接计算,复杂度就是调和级数 \(O(nlogn)\)。

Dirchlet逆依旧可以直接计算:

有函数 \(f\),需要求出 \(g\) 满足 \(f \otimes g = \epsilon\)。

那么显然就有 \(f(1)g(1) = 1\),则 \(g(1) = \frac{1}{f(1)}\)。当 \(n \geq 2\) 时,则有

\[(f \otimes g)(n) = \sum_{d | n} f(d)g(n / d) = 0 \\ g(n)f(1) = -\sum_{d | n, d \neq 1}f(d)g(n / d) \\ \Rightarrow g(n) = -\frac{1}{f(1)}\sum_{d | n, d \neq 1}f(d)g(n / d) \]

常用数论函数

\(\epsilon(n) = [n = 1]\)

\(id_k(d) = d^k\)

\(\sigma_k(n) = \sum_{d|n} d^k\)

\(\mu(n)\)

\(\varphi(n)\)

性质;

\(\mu \otimes 1 = \epsilon\)

\(\varphi \otimes 1 = id\)

\(\mu \otimes id = \varphi\) (这个可以拿前两个推)

\(1 \otimes 1 = d\)

\(1 \otimes id_k = \sigma_k\)

莫比乌斯反演

\[f(n) = \sum_{d|n} g(d) \Longleftrightarrow g(n) = \sum_{d|n} f(d)\mu(n / d) \]

证明很简单:

\[f = g \otimes 1 \\ g \otimes 1 \otimes \mu = g = f \otimes \mu \]

联系子集反演:

\[f_S = \sum_{T \subseteq S}g(T) \Longleftrightarrow g_S = \sum_{T \subseteq S} (-1)^{|S| - |T|}f_T \]

我们知道 \(s\) 是一个集合,而 \(d\) 可以看作是所有质因子的多重集,所以二者很相似,我们可以这样理解,如果 \(n = \prod p\),也就是所有质因子质数为1,那么就和子集反演完全等价,就可以理解 \((-1)^{|S| - |T|} = \mu(n / d)\)。

整除分块

这个很牛,考虑一个问题,我们固定一个不变 \(n\),那么所有的 \(\lfloor \frac{n}{x} \rfloor\) 有多少种取值?

答案是 \(O(\sqrt n)\) 种,证明:

\(x \leq \sqrt n\) 时,显然有 \(O(\sqrt n)\) 种,因为 \(x\) 只有 \(\sqrt n\) 个。

\(x > \sqrt n\) 时,因为 \(\lfloor \frac{n}{x} \rfloor \leq \sqrt n\) ,所以也只有 \(O(\sqrt n)\) 种。

那么 \(\lfloor \frac{n}{x} \rfloor\) 的取值就是若干个颜色段,只要我们可以 \(O(1)\) 的求出边界是多少,那么就可以 \(O(\sqrt n)\) 的算出 \(\sum \lfloor \frac{n}{x} \rfloor\)!

现在我们知道一个颜色段的左端点 \(l\),考虑设右端点为 \(r\),那么就有:

\[\lfloor \frac{n}{l} \rfloor \leq \frac{n}{r} \Longrightarrow r \leq \frac{n}{\lfloor \frac{n}{l} \rfloor} \]

所以 \(\large r = \frac{n}{\lfloor \frac{n}{l} \rfloor}\)。

多维形式

也就是有多维,以两维为例,我需要求 \(\sum \lfloor \frac{n}{i}\rfloor \lfloor \frac{m}{i}\rfloor\),分析一下发现颜色段还是 \(O(\sqrt n)\) 级别,如果维数过大,那么就是 \(O(k \sqrt n)\) 。我们每次 \(r\) 取 \(\large min(\frac{n}{\lfloor \frac{n}{l} \rfloor}, \frac{m}{\lfloor \frac{m}{l} \rfloor})\)即可。

筛法

线性筛

筛 \(\mu\) 和 \(\varphi\)

\[\varphi(n) = n \prod \frac{p - 1}{p} \]

\[\mu(n) = \begin{cases} 0 \quad, 含有平方质因子 \\ (-1)^{k} \quad, 不同质因子个数 \end{cases} \]

我们就考虑线性筛时的两种情况:

  1. \(i \% p \neq 0\) 时,那么对于 \(\varphi\) 就是用积性函数性质 \(\varphi(i * p) = \varphi(i) * \varphi(p) = \varphi(i) * (p - 1)\), 对于 \(\mu\) 就是多了一个不同质因子 \(\mu(i * p) = -\mu(i)\)。

  2. \(i \% p = 0\)时,我们用上面 \(\varphi\) 的公式就发现 \(\varphi(i * p) = \varphi(i) * p\),对于 \(\mu(i * p)\) 就直接变成 \(0\)。

筛一般的积性函数

由前面推论2我们知道,题面肯定会给在 \(p\) 或者 \(p_k\) 的点值,这个点值的计算我们姑且声称他的时间复杂度为 \(O(logn)\)。那我们怎么用线性筛筛出所有的呢?

我们知道线性筛是用最小质因子来筛的,那么设 \(n = p_0^{k_0} \prod p_i^{k_i}\),我们钦定 \(p_0\) 为最小质因子,\(m = \prod p_i^{k_i}\),那么我们用 \(p_0\) 筛 \(n\) 的时候就可以 \(f(n) = f(m) * f(p_0^{k_0})\),我们就只需要知道最小质因子的次数,这在线性筛的过程中就可以做到,很简单。

杜教筛

杜教筛是比较基础的亚线性筛法。 可以在低于线性的复杂度筛出积性函数的前缀和。

我们现在除了化式子拆掉 \(\sum\),能加速求和的就只有整除分块了,所以我们需要构造出来跟除法有关,尝试用 Dirchlet 卷积,若我们现在要求 \(f\),所以我们需要构造一个 \(g\),通过 \(g\) 来求出 \(f\),一个方法就是卷积起来在拆开,我们尝试化一下式子。

\[\sum_{i = 1}^n (f \otimes g)(i) = \sum_{i = 1}^n \sum_{d | i} g(d)f(i / d) = \sum_{d = 1}^n g(d) \sum_{d | i} f(i / d) = \sum_{d = 1}^n g(d) \sum_{i = 1}^{n / d} f(i) \\ \Rightarrow \sum_{i = 1}^n f(i) = (\sum_{i = 1}^n (f \otimes g)(i)) - \sum_{d = 2}^n g(d) \sum_{i = 1}^{n / d} f(i) \]

观察到 \(\sum_{i = 1}^{n / d}f(i)\) 只有 \(O(\sqrt n)\) 个取值,\(g\) 是我们所构造的,如果我们能构造出容易计算的 \(g\) 和 \(f \otimes g\),那么就可以快速算出答案。

方便描述,我们成全体 \({S_f(\lfloor n / x \rfloor)}\) 为 \(f\) 的基本和组。

可以分析得出时间复杂度 \(O(n^{\frac{3}{4}})\),并且如果可以,可以 \(O(n)\) 筛出前 \(n^{\frac{2}{3}}\) 项,大于 \(n^{\frac{2}{3}}\) 的就递归计算。

上面的是已知 \(f \otimes g\) 的基本和组和 \(g\) 的基本和组,求 \(f\) 的基本和组。

如果我们已知 \(f\) 和 \(g\) 的基本和组,我们一样可以类似杜教筛的求 \(f \otimes g\) 的基本和组。

\[\sum_{i = 1}^n (f \otimes g)(i) = \sum_{i = 1}^n \sum_{d | i} g(d)f(i / d) = \sum_{d = 1}^n g(d) \sum_{d | i} f(i / d) = \sum_{d = 1}^n g(d) \sum_{i = 1}^{n / d} f(i) \]

直接拿这个算和上面本质相同。

我们还有另外一个方法。

狄利克雷双曲线法

我们用一下简单的容斥。

\[\sum_{i = 1}^n (f \otimes g)(i) = \sum_{xy \leq n} f(x)g(y) \]

注意到 \(xy \leq n\) 是一个双曲线,我们可以这样容斥,如图。

这是一个双曲线,我们把所有的 \(f(x)g(y)\) 看作点 \((x, y)\),那么蓝色部分就是 \(y \leq \sqrt n\) 的点集,红色部分就是 \(x \leq \sqrt n\) 的点集,相交部分就是同时满足两个条件的。

所以我们可以算出蓝色部分和红色部分再减去相交的部分,用式子表述就是:

\[S_{f \otimes}(n) = \sum_{x \leq \sqrt n} f(x)S_g(n / x) + \sum_{y \leq \sqrt n} g(x)S_f(n / x) - S_f(\sqrt n) S_g(\sqrt n) \]

这个东西复杂度没有变化,但是听说常数比较小。感觉上也更妙一些。。。

Powerful Number 筛

这个东西要暴力一些,比杜教筛更现代。 而且更快。

标签:frac,数论,sum,sqrt,mu,varphi,otimes,相关
From: https://www.cnblogs.com/qerrj/p/18363636

相关文章

  • C#接口、结构体、抽象类、枚举、可空类型相关概念
    C#中的接口:定义一套规则,其他类实现规则。规则===》锲约,合同。接口必须实现,才能使用。接口也是多态性的表现。1、C#接口的概念?接口:使用java和asp.net等编写的API接口。让其他人通过相应的请求协议(如:http/https)来访问。理解成“在接口服务器上定义多个方法,在客户端上调用这......
  • File相关类
    ......
  • dl相关知识
    https://www.cnblogs.com/wangguchangqing/p/10521330.html方向导数与梯度方向导数:函数在某一点上沿一方向的变化率对于取极限部分,在比上ρ后出现fxcosθ和fysinθ,对这两个函数的出现可以使用三角函数推导,出tan²θ后转化即可推出。梯度未某函数的连续偏导对于方向导数和梯......
  • 【运筹学】链、路、圈、回路、树与生成树(图与网络相关概念)
    1 链、路、圈、回路1.1链和路的概念、区别、关系    链是连接两个节点的一序列边或弧;    路是连接两个节点的同一方向上的一序列边或弧;    区别:链和路的区别仅在于链是无方向限制的,路是同一方向的;    关系:①路是沿前进方向连接所有弧的......
  • JDK源码——String相关
    StringJDK源码中的String类是Java中最常用的类之一,它提供了许多用于处理字符串的方法。以下是一些常用的String类方法:构造方法:String():创建一个空字符串。String(char[]value):根据字符数组创建一个新的字符串。String(byte[]bytes,intoffset,intlength):根据字节数......
  • js无法操作或者获取哪些真机相关信息
    在JavaScript中,特别是在Web应用程序中,出于安全和隐私的考虑,有一些真机(设备)相关信息是无法被操作或获取的。以下是一些常见的限制:设备唯一标识符:如IMEI、MAC地址等,这些信息通常无法通过JavaScript获取。系统文件:JavaScript无法访问设备的文件系统。硬件信息:如CPU型号、GPU......
  • 字符串后缀相关
    1.后缀数组1.1内容我们将一个字符串\(s\)的所有后缀按照字典序从小到大排序得到数组\(sa\),其中\(sa_i\)表示以\(sa_i\)开始的后缀排名是第\(i\)个。这个数组就叫后缀数组(SuffixArray,SA)。考虑到长度各不相同,所以显然是个排列,设数组\(rk\)是这个数组的逆排列。......
  • Dllhost.exe 是 Windows 操作系统中的一个进程,通常与 COM+ 服务相关。它的主要作用是
    Dllhost.exe是Windows操作系统中的一个进程,通常与COM+服务相关。它的主要作用是运行COM组件和处理进程间的通信。Dllhost.exe的起源可以追溯到MicrosoftWindows2000和WindowsXP的早期版本。它是Windows操作系统的一部分,主要用于支持COM+(ComponentObjectMode......
  • 【Linux入门】账号安全、系统安全以及应用相关基础命令
    文章目录账号安全系统账号限制相关命令密码安全控制系统安全以及应用pam-权限管理一、PAM体系概述二、PAM认证原理三、PAM配置方式四、PAM控制标记visudo-组账号控制一、visudo的基本作用二、使用visudo控制组账号的sudo权限1.编辑/etc/sudoers文件2.添加组......
  • 数据库表对应的实体类上的相关注解
    一、解释这些注解是Java中常用的Lombok库和MyBatis-Plus框架提供的,用于简化实体类的开发和ORM映射。下面是对每个注解的解释:1.**@Data**:  -这是Lombok库的一个综合注解,包含了以下几个注解的功能:   -`@Getter`:为所有字段生成getter方法。   -`@Setter`:......