首页 > 其他分享 >数论函数及定理

数论函数及定理

时间:2025-01-16 15:24:39浏览次数:1  
标签:frac 函数 数论 定理 mid varphi mu sum

数论函数及定理

积性函数

OI Wiki 链接。

定义

对于函数 \(f(x)\),满足 \(f(1)=1\) 且 \(\forall \gcd(a,b)=1, f(ab)=f(a)f(b)\)。则 \(f(x)\) 是积性函数。

如果对所有 \(a,b\) 都成立,\(f(x)\) 就是完全积性函数。

例子

欧拉函数 \(\varphi(x)\) 是积性函数。

欧拉函数

定义

欧拉函数 \(\varphi(x)\) 等于 $\le x $ 且与 \(x\) 互质的数的个数。比如 \(\varphi(1)=1,\varphi(6)=2\)。

性质和公式

  1. \(\varphi(x)\) 是积性函数。

\[\varphi(ab) = \varphi(a) \varphi(b) \]

  1. 推论

将 \(n\) 质因数分解,得到 \(n = \sum_{i=1}^s p_i^{c_i},c_i>0\)。

\[\varphi(n) = \prod_{i=1}^s \varphi(p_i^{c_i}) \]

积性函数的性质。

  1. 神秘公式。

\[n = \sum_{x\mid n} \varphi(x) \]

不好证,证明鸽掉。

  1. 引理。

\(p\) 是质数。

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

由定义可证。

  1. 计算用公式。

\[\varphi(n) = n \times \prod_{i=1}^s \frac{p_i-1}{p_i} \]

显然 \(c_i\) 不影响 \(\varphi(n)\)。

\[\begin{aligned} \varphi(n) & = \prod_{i=1}^s \varphi(p_i^{c_i})\\ & = \prod_{i=1}^s p_i^{c_i} - p_i^{c_i-1} \\ & = \prod_{i=1}^s p_i(1-\frac{1}{p_i}) \\ & = n \times \prod_{i=1}^s \frac{p_i-1}{p_i} \end{aligned} \]

线性筛求欧拉函数

线性筛的时候我们会求出每个数的最小质因数 \(pri_n\)。

设 \(n' = \frac{n}{pri_n}\)。

  • \(pri_n \mid n'\)。

    则 \(n\) 和 \(n'\) 的质因子种类相同,只是 \(n\) 多一个 \(pri_n\) 罢了。

    根据欧拉函数的计算用公式,得到 \(\varphi(n) = pri_n \varphi(n')\)。

  • \(pri_n \nmid n'\)。

    此时 \(n\) 比 \(n'\) 多一种质因子 \(pri_n\),数量是多一个,那么有 \(\varphi(n) = (pri_n - 1) \varphi(n')\)。

莫比乌斯函数

参考 OI Wiki莫比乌斯反演

定义

莫比乌斯函数 \(\mu(n)\) 定义为:

\[\mu(n) = \begin{cases} 1\\ 0 \ (n 有平方因子)\\ (-1)^k \ k 是 n 的因子个数 \end{cases} \]

性质

  1. \(\mu(n)\) 是积性函数。

  2. 最常用性质。

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

将 \(n\) 质因数分解:\(n = \sum_{i=1}^s p_i^{c_i}\)。

\(\sum_{d \mid n} \mu(d) = \sum_{k=0}^s \binom{s}{k} (-1)^k = (1+(-1))^s = [s=0]\)。

  1. 神奇的性质。

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

不会证。

线性筛求莫比乌斯函数

void init_mu() {
	mu[1]=1;
	rep(i,2,Max) {
		if(!vi[i]) mu[i]=-1, p[++p0]=i;
		for(int j=1;j<=p0 && i*p[j]<=n;j++) {
			vi[i*p[j]]=1;
			if(i%p[j]==0) break;
			mu[i*p[j]]=-mu[i];
		}
	}
}

莫比乌斯反演

如果有函数 \(F(n)\) 和 \(f(n)\) 满足:

\[F(n) = \sum_{n \mid d} f(d) \]

那么有:

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

不会证,不证。

经验

P2522 [HAOI2011] Problem b 板题

容斥一下,变成每次询问求 \(O(1)\) 个 \(f(k)=\sum_{i=1}^a \sum_{j=1}^b [\gcd(i,j)=k]\)。

我们知道求 \(F(k)\) 表示 \(i\le a,j\le b,k\mid \gcd(i,j)\) 是好求的,等于 \(\lfloor \frac{a}{k} \rfloor \lfloor \frac{b}{k} \rfloor\)。

然后又有 \(F(k) = \sum_{k \mid d} f(d)\),根据莫比乌斯反演公式,得到 \(f(n) = \sum_{k\mid d} \mu(\frac{d}{k}) F(d)\)。

\[ans = f(k) = \sum_{k \mid d} \mu(\frac{d}{k}) F(d) = \sum_{t=1}^{\min(\lfloor \frac{a}{k} \rfloor,\lfloor \frac{b}{k} \rfloor)} \mu(t) \lfloor \frac{a}{kt} \rfloor \lfloor \frac{b}{kt} \rfloor \]

然后整除分块一下,单次询问 \(O(\sqrt{n})\)。

标签:frac,函数,数论,定理,mid,varphi,mu,sum
From: https://www.cnblogs.com/liyixin0514/p/18673826

相关文章

  • 递归——用最少的代码完成复杂的运算-函数(中)
    前言:上期我们介绍了函数的概念,库函数,自定义函数等等,这期我们来介绍一下函数的嵌套调用,链式访问,和函数递归。传送门:上一篇文章在这里函数上一,函数的嵌套调用听到函数嵌套不知你是否会想起,条件嵌套,和循环嵌套;条件嵌套:是多个条件语句比如说多个if语句嵌套在一起;循环嵌套:是多......
  • 深入解析 Spring AI 系列:解析函数调用
    我们之前讨论并实践过通过常规的函数调用来实现AIAgent的设计和实现。但是,有一个关键点我之前并没有详细讲解。今天我们就来讨论一下,如何让大模型只决定是否调用某个函数,但是SpringAI不会在内部处理函数调用,而是将其代理到客户端。然后,客户端负责处理函数调用,将其分派到相应......
  • (四)C语言基础学习(3):深入理解输入输出函数、数据类型的格式控制与流程控制
    一、标准输入输出函数1.字符输入输出:getchar和putchar这两个函数是最基本的输入输出函数,用于单个字符的读取和显示。intgetchar(void);//从键盘获取一个字符intputchar(intc);//向终端输出一个字符示例:charch=getchar();//读取一个字符putchar(ch);......
  • authenticate函数返回空值的异常情况处理,自创authenticate函数
    主要分为两种情况一、数据的密码加密问题对于数据库表进行数据创建时使用model类进行正常数据创建,导致数据库表内密码为明文,但是authenticate()查找数据会自动加密,因此应该使用User.objects.create_user(username=username,password=password)进行数据创建。二、数据查找异......
  • 机器学习中的凸函数和梯度下降法
    一、凸函数在机器学习中,凸函数和凸优化是优化问题中的重要概念,许多机器学习算法的目标是优化一个凸函数。这些概念的核心思想围绕着优化问题的简化和求解效率。下面从简单直观的角度来解释。1.什么是凸函数?数学定义一个函数f(x)f(x)是凸函数,当且仅当它满足以下条件:......
  • 【c++】函数调用机制
    【c++】函数调用机制1.建立栈帧空间2.传递数据,为局部变量分配空间3.保护现场,主调函数运行状态和返回值地址入栈4.执行被调函数体5.释放局部变量的栈空间6.恢复现场,取主调函数运行状态和返回值地址7.继续执行主调函数后续语句详细介绍:ebpespeax等均是寄存器1.......
  • 【C语言】_字符串函数strcpy
    目录1. 函数声明及功能2.使用示例3.注意事项4. 模拟实现4.1第一版:基本功能+判空+const修饰4.2第二版:优化对于'\0'的单独拷贝4.3第三版:仿strcpy的char*返回值1. 函数声明及功能char*strcpy(char*destination,constchar*source); strcpy功能:字......
  • Effective C++ 之【条款7:为多态基类声明virtual析构函数】
    文章目录Tips1Tips2一、为什么要有virtual析构函数?二、为什么有时候不要声明虚构函数?三、使用一下纯虚函数。TodayThinking~Tips1polymorphic(带有多态性质的)baseclasses应该声明一个virtual的虚构函数。如果class带有任何virtual函数,它就应该拥有一个virtual析构......
  • OpenCV相机标定与3D重建(58)用于精细化优化由 cv::solvePnP 或 cv::solvePnPRansac 等
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述从3D-2D点对应关系出发,并基于一个初始解,精细化姿态(将物体坐标系中的3D点变换到相机坐标系的旋转和平移)。cv::solvePnPRefineVVS是OpenCV中用于精细化优化由cv::solvePnP或c......
  • OpenCV相机标定与3D重建(57)精细化优化由 cv::solvePnP 或 cv::solvePnPRansac 等函数
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述从3D-2D点对应关系出发,并基于一个初始解,精细化姿态(将物体坐标系中的3D点变换到相机坐标系的旋转和平移。cv::solvePnPRefineLM是OpenCV中用于精细化优化由cv::solvePnP或cv......