首页 > 其他分享 >欧拉系列

欧拉系列

时间:2024-08-12 08:54:12浏览次数:6  
标签:系列 gcd dfrac sum varphi 欧拉 equiv

欧拉系列

欧拉函数

欧拉函数 \(\varphi(n)\) 表示 \(1 \sim n\) 内与 \(n\) 互质的数的个数。

性质

  • 欧拉函数是积性函数,特别的有 \(\varphi(2n) = \varphi(n)\) 。
  • \(\sum_{d | n} \varphi(d) = n\) 。
    • 证明:设 \(f(x)\) 表示 \(\gcd(k, n) = x (k \in [1, n])\) 的个数,则 \(n = \sum_{d | n} f(d) = \sum_{d | n} \varphi(\dfrac{n}{d}) = \sum_{d | n} \varphi(d)\) 。
  • 当 \(n\) 为质数时, \(\varphi(n) = n - 1\) 。
  • 若 \(n = p^k (p \in prime)\) ,则 \(\varphi(n) = p^k - p^{k - 1}\) 。
  • 由唯一分解定理,设 \(n = \prod p_i^{k_i}\) ,则 \(\varphi(n) = n \times \prod \dfrac{p_i - 1}{p_i}\) ,证明考虑用积性函数性质即可。
  • $n > 2 \rightarrow 2 | \varphi(n) $ ,证明考虑对称性即可。
  • 对于 \(m, n \not = 0\) ,有 \(\varphi(mn) \varphi(\gcd(m, n)) = \varphi(m) \varphi(n) \gcd(m, n)\) 。

求法

求单个数的欧拉函数:

inline int euler_phi(int n) {
	int phi = n;
	
	for (int i = 2; i * i <= n; ++i)
		if (!(n % i)) {
			phi = phi / i * (i - 1);
			
			while (!(n % i))
				n /= i;
		}
	
	if (n > 1)
		phi = phi / n * (n - 1);
	
	return phi;
}

线性筛法:

inline void prework(int n) {
	memset(isp, true, sizeof(isp));
	isp[1] = false, phi[1] = 1;
	
	for (int i = 2; i <= n; ++i) {
		if (isp[i])
			pri[++pcnt] = i, phi[i] = i - 1;
		
		for (int j = 1; j <= pcnt && i * pri[j] <= n; ++j) {
			isp[i * pri[j]] = false;
			
			if (i % pri[j])
				phi[i * pri[j]] = phi[pri[j]] * phi[i];
			else {
				phi[i * pri[j]] = pri[j] * phi[i];
				break;
			}
		}
	}
}

费马小定理

若 \(p\) 为质数且 \(\gcd(a, p) = 1\) ,则 \(a^{p - 1} \equiv 1 \pmod{p}\)

另一种形式:对于任意整数 \(a\) ,有 \(a^p \equiv a \pmod{p}\) 。

证明:考虑数学归纳法,显然 \(1^p \equiv 1 \pmod{p}\) 成立。假设 \(a^p \equiv a \pmod{p}\) 成立,则:

\[(a + 1)^p = a^p + \dbinom{p}{1} a^{p - 1} + \cdots + \dbinom{p}{p - 1} a + 1 \equiv a^p + 1 \equiv a + 1 \pmod{p} \]

得证。

欧拉定理

欧拉定理:若 \(gcd(a, m) = 1\) ,则 \(a^{\varphi(m)} \equiv 1 \pmod{m}\) 。

实际上费马小定理就是欧拉定理 \(m \in prime\) 的特殊情况。

扩展欧拉定理

\[a^b \equiv \begin{cases} a^{b \bmod \varphi(m)}, &\gcd(a, m) = 1, \\ a^b, &\gcd(a, m \not = 1), b < \varphi(m), \\ a^{(b \bmod \varphi(m)) + \varphi(m)}, &\gcd(a, m) \not = 1, b \geq \varphi(m). \end{cases} \pmod{m} \]

第二行意思是若 \(b < \varphi(m)\) 就不能降幂了。

欧拉反演

本质就是利用 \(n = \sum_{d | n} \varphi(d)\) 做一些变换。

如:

\[\gcd(i, j) = \sum_{d | \gcd(i, j)} \varphi(d) = \sum_{d | i} \sum_{d | j} \varphi(d) \]

于是可以得到:

\[\sum_{i = 1}^n \gcd(i, n) = \sum_{i = 1}^n \sum_{d | n} \sum_{d | i} \varphi(d) = \sum_{d | n} \lfloor \dfrac{n}{d} \rfloor \varphi(d) \]

应用

P2398 GCD SUM

求:

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

\(n \leq 10^5\)

\[\begin{align} &\sum_{i = 1}^n \sum_{j = 1}^m \gcd(i, j) \\ =& \sum_{i = 1}^n \sum_{j = 1}^m \sum_{k | i} \sum_{k | j} \varphi(k) \\ =& \sum_{k = 1}^n \varphi(k) \sum_{i = 1}^n \sum_{j = 1}^m [k | i] [k | j] \\ =& \sum_{k = 1}^n \lfloor \dfrac{n}{k} \rfloor \lfloor \dfrac{m}{k} \rfloor \varphi(k) \end{align} \]

本题是 \(m = n\) 的特殊情况,\(O(n)\) 预处理, \(O(\sqrt{n})\) 查询即可。

另解:设 \(f_k\) 表示 \(\gcd(i, j) = k\) 的个数,\(g_k\) 表示 \(k | \gcd(i, j)\) 的个数,显然 \(g_k = \sum f_{kd} = \lfloor \dfrac{n}{k} \rfloor^2\) ,故 \(f_k = \lfloor \dfrac{n}{k} \rfloor^2 - (f_{3k} + f_{3k} + \cdots)\)

复杂度为 \(O(n H(n))\) ,其中 \(H(n)\) 为调和级数。

标签:系列,gcd,dfrac,sum,varphi,欧拉,equiv
From: https://www.cnblogs.com/wshcl/p/18354300/euler

相关文章

  • Prometheus系列二进制部署
    Prometheus二进制部署官网下载prometheusDownload|Prometheus解压压缩包tar-zxvfprometheus-2.54.0.linux-amd64.tar.gz移动到安装路径下mv./prometheus-2.54.0.linux-amd64/usr/local/bin/prometheus创建启动用户(可选)sudouseradd-rs/bin/falseprometheu......
  • Midjourney提示词-动物系列-41
    Anthropomorphicbattlemechawithtriangularredlensesfortheeyes,colourportrait,finelymetalstructure,cinematiclighting,intricatefiligreemetaldesignarmour,hostiledesign,awe-effect,8k,unrealengine,octanerender,realistic,volumetricl......
  • 【待做】【前端开发系列】 class 类的私有属性
    https://mp.weixin.qq.com/s/f-ShUeDXUQlQIwVCrAVgSAclass类的私有属性前端工作室前端精髓2024年08月11日10:51北京图片私有属性是常规的类的公有属性(包括类字段、类方法等)的对应。私有属性通过添加#前缀来创建,在类的外部无法合法地引用。这些类属性的私有封装由JavaS......
  • 【MSF系列】命令合集
    ###生成payloadmsfvenom-pwindows/meterpreter/reverse_winhttpsLHOST=39.97.167.211LPORT=6667--platformwindows-ax86HandLerSSLCert=./my.pemStagerVerifySSLCert=true-s42--smallest-ex86/shikata_ga_nai-i9-fraw|msfvenom--platformwindows-ax86......
  • 【1.0版】【MYSQL安全】sql注入系列:宽字节注入
    主题sql注入系列:宽字节注入原理mysql在使用GBK编码的时候,会认为两个字符为一个汉字,例如%aa%5c就是一个汉字(前一个ascii码大于128才能到汉字的范围)。我们在过滤’的时候,往往利用的思路是将‘转换为\’因此我们在此想办法将‘前面添加的\除掉,一般有......
  • 【1.0版】【MYSQL安全】sql注入系列:堆叠注入
    主题sql注入系列:堆叠注入原理mysql数据库sql语句的默认结束符是以;结尾,在执行多条SQL语句时就要使用结束符隔开,那么在;结束一条sql语句后继续构造下一条语句,是否会一起执行我们发现确实同时执行了,那么在实际中我们引号闭合之后也有可能可以进行堆叠注入,但是堆叠注入和开......
  • 算法题系列5
    题目描述模拟一套简化的序列化传输方式,请实现下面的数据编码与解码过程1.编码前数据格式为[位置,类型,值],多个数据的时候用逗号分隔,位置仅支持数字,不考虑重复等场景;类型仅支持:Integer/String/Compose(Compose的数据类型表示该存储的数据也需要编码)2.编码后数据参考图示,数据......
  • 【1.0版】【MYSQL安全】sql注入系列:基于报错的 SQL 盲注
    主题sql注入:基于报错的SQL盲注一、Floor报错注入1.1floor函数1.2rand函数1.3count(*)1.4floor函数实际利用二、extractvalue函数三、updatexml函数:同extractvalue本来网页是不显示信息的,但是我们可以构造payload让信息通过错误提示回显出......
  • Intel系列微处理器的3种工作模式
    Intel系列微处理器的3种工作模式​微机中常用的Intel系列微处理器的主要发展过程是:8080,8086/8088,80186,80286,80386,80486,Pentium,PentiumⅡ,PentiumlII,Pentium4​8086/8088是一个重要的阶段,8086和8088是略有区别的两个功能相同的CPU。8088被IBM用在了它所生产的......
  • 深入了解HTML链接:从基础到进阶——WEB开发系列06
    超链接是互联网中最有趣的创新之一,自互联网诞生起,它们就一直是互联网的一个核心特性,使网络成为一个互联的系统。超链接允许我们将文档连接到其他文档或资源,甚至是文档中的特定部分。通过一个简单的网址,可以提供应用程序。几乎所有网络内容都可以被转换为链接,点击或激活这些超链......