莫比乌斯反演欧拉函数杜教筛大总结

莫比乌斯函数

定义

设\(n=\prod_{i=1}^{k} p_i^{c_i}\),则\(\mu(n)=(-1)^k\),特别地\(\mu(1)=1\)。

性质

最常用性质

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

反演性质

\(F(n)=\sum_{d|n}f(d) \Longleftrightarrow f(n)=\sum_{d|n}F(d)\mu(\frac{n}{d})\)

\(F(n)=\sum_{n|d}f(d) \Longleftrightarrow f(n)=\sum_{n|d}F(d)\mu(\frac{d}{n})\)

常用性质

\(\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd(i,j)=1]=\sum_{d=1}^{n}\mu(d)\lfloor\frac{n}{d}\rfloor \lfloor\frac{n}{d}\rfloor\)

欧拉函数

定义

设\(n=\prod_{i=1}^{k}p_i^{c_i}\),有\(\phi(n)=n\prod_{i=1}^{k}\frac{p_i-1}{p_i}\)。

性质

最常用性质

\(\sum_{d|n}\phi(d)=n\)

零零散散的一些性质(没收集完)

\(\phi(ab)=\frac{\phi(a)\phi(b)gcd(a,b)}{\phi(gcd(a,b))}\)

与莫比乌斯函数的联系

$\frac{\phi(n)}{n}=\sum_{d|n}\frac{\mu(d)}{d} \Longleftrightarrow \phi(n)=\sum_{d|n}\mu(d)\frac{n}{d}=\sum_{d|n}\mu(\frac{n}{d})d $

杜教筛

思路

狄利克雷卷积

两函数\(f,g\)的狄利克雷卷积\((f*g)\)定义如下:

\((f*g)(i)=\sum_{d|i}f(d)g(\frac{i}{d})\)

函数前缀和

令\(S(n)=\sum_{i=1}^{n}f(i)\)

\(\sum_{i=1}^{n}(f*g)(i)\\=\sum_{i=1}^{n}\sum_{d|i}g(d)f(\frac{i}{d})\\=\sum_{d=1}^{n}g(d)\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor }f(i)\\=\sum_{d=1}^{n}g(d)S(\lfloor \frac{n}{d} \rfloor )\)

移项得:

\(g(1)S(n)=\sum_{i=1}^{n}(f*g)(i)-\sum_{d=2}^{n}g(d)S(\lfloor \frac{n}{d} \rfloor )\)

于是可以递归求解。

莫比乌斯函数前缀和

令\(f(i)=\mu(i),g(i)=1\),有:

\(\sum_{i=1}^{n}(f*g)(i)\\=\sum_{i=1}^{n}\sum_{d|i}g(d)f(\frac{i}{d})\\=\sum_{i=1}^{n}\sum_{d|i}\mu(\frac{i}{d})\\=\sum_{i=1}^{n}[i=1]\\=1\)

所以\(S(n)=1-\sum_{d=2}^{n}g(d)S(\lfloor \frac{n}{d} \rfloor )\)

欧拉函数前缀和

令\(f(i)=\phi(i),g(i)=1\),有:

\(\sum_{i=1}^{n}(f*g)(i)\\=\sum_{i=1}^{n}\sum_{d|i}g(d)f(\frac{i}{d})\\=\sum_{i=1}^{n}\sum_{d|i}\phi(\frac{i}{d})\\=\sum_{i=1}^{n}i\\=\frac{n(n+1)}{2}\)

所以\(S(n)=\frac{n(n+1)}{2}-\sum_{d=2}^{n}g(d)S(\lfloor \frac{n}{d} \rfloor )\)

其他一些函数的前缀和

若\(f(i)=\mu(i)*i\),则\(g(i)=i\)。

\(\sum_{i=1}^{n}(f*g)(i)\\=\sum_{i=1}^{n}\sum_{d|i}g(d)f(\frac{i}{d})\\=\sum_{i=1}^{n}\sum_{d|i}d*\frac{i}{d}*\mu(\frac{i}{d})\\=\sum_{i=1}^{n}i\sum_{d|i}\mu(\frac{i}{d})\\=\sum_{i=1}^{n}[i=1]\\=1\)

所以\(S(n)=1 - \sum_{d=2}^{n}g(d)S(\lfloor \frac{n}{d} \rfloor )\)

留个大坑先。。。。。

原文地址:https://www.cnblogs.com/zjlcnblogs/p/12010303.html

时间: 2024-10-10 19:54:58

莫比乌斯反演欧拉函数杜教筛大总结的相关文章

luogu2658 GCD(莫比乌斯反演/欧拉函数)

link 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 1<=N<=10^7 (1)莫比乌斯反演法 发现就是YY的GCD,左转YY的GCD粘过来就行 代码太丑,没开O2 TLE5个点 #include <cstdio> #include <functional> using namespace std; const int fuck = 10000000; int prime[10000010], tot; bool v

HDU 6390 GuGuFishtion(莫比乌斯反演 + 欧拉函数性质 + 积性函数)题解

题意: 给定\(n,m,p\),求 \[ \sum_{a=1}^n\sum_{b=1}^m\frac{\varphi(ab)}{\varphi(a)\varphi(b)}\mod p \] 思路: 由欧拉函数性质可得:\(x,y\)互质则\(\varphi(xy)=\varphi(x)\varphi(y)\):\(p\)是质数则\(\varphi(p^a)=(p-1)^{a-1}\).因此,由上述两条性质,我们可以吧\(a,b\)质因数分解得到 \[ \begin{aligned} \sum_{

BZOJ.2705.[SDOI2012]Longge的问题(莫比乌斯反演 欧拉函数)

题目链接 \(Description\) 求\[\sum_{i=1}^n\gcd(i,n)\] \(Solution\) \[ \begin{aligned} \sum_{i=1}^n\gcd(i,n) &=\sum_{d=1}^nd\sum_{i=1}^n[\gcd(i,n)=d]\ &=\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}[\gcd(i,\lfloor\frac{n}{d}\rfloor)=1] \end{aligned

51nod1238 最小公倍数之和 V3 莫比乌斯函数 杜教筛

题意:求\(\sum_{i = 1}^{n}\sum_{j = 1}^{n}lcm(i, j)\). 题解:因为是用的莫比乌斯函数求的,所以推导比大部分题解多...而且我写式子一般都比较详细,所以可能看上去很多式子,实际上是因为每一步都写了,几乎没有跳过的.所以应该都可以看懂的. 末尾的\(e\)函数是指的\(e[1] = 1\),\(e[x] = 0(x != 1)\)这样一个函数 \[\sum_{i = 1}^{n}\sum_{j = 1}^{n}lcm(i, j)\] \[\sum_{i

hdu1695(莫比乌斯)或欧拉函数+容斥

题意:求1-b和1-d之内各选一个数组成数对,问最大公约数为k的数对有多少个,数对是有序的.(b,d,k<=100000) 解法1: 这个可以简化成1-b/k 和1-d/k 的互质有序数对的个数.假设b=b/k,d=d/k,b<=d.欧拉函数可以算出1-b与1-b之内的互质对数,然后在b+1到d的数i,求每个i在1-b之间有多少互质的数.解法是容斥,getans函数参数的意义:1-tool中含有rem位置之后的i的质因子的数的个数. 在 for(int j=rem;j<=factor[i

[BZOJ2818] Gcd (数论,欧拉函数,线性筛)

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2818 必须用线性筛. 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 const int maxn = 10001001; 5 LL phi[maxn], sum[maxn], n; 6 bool isprime[maxn]; 7 LL prime[maxn]; 8 int tot;

[数论]欧拉函数&素数筛

一.欧拉函数 欧拉函数是小于x的整数中与x互质的数的个数,一般用φ(x)表示. 通式: 其中p1, p2--pn为x的所有质因数,x是不为0的整数. 比如x=12,拆成质因数为12=2*2*3, 12以内有1/2的数是2的倍数,那么有1-1/2的数不是2的倍数(1,3,5,7,9,11), 这6个数里又有1/3的数是3的倍数, 只剩下(1 - 1/2 - 1/3)的数既不是2的倍数,也不是3的倍数(1,5,7,11). 这样剩下的12*(1 - 1/2 - 1/3)=4,即4个数与12互质,所以

BZOJ2818 GCD 【欧拉函数,线性筛】

题目大意: 给一个范围[1,n],从中找出两个数x,y,使得gcd(x,y)为质数,问有多少对(x,y有序) 解法: 不难,欧拉函数练手题,可以定义集合P ={x|x为素数},那么我们枚举gcd(x,y)可能等于的情况,对于任意p∈P可以得到:gcd(k1·p,k2·p) = p,当且仅当gcd(k1,k2) =1;那么我们就只需要枚举所有的k1,k2了.不妨设k1>k2,那么给定k1,k2的个数就是phi(k1),因为有序,所以给phi*2,但是,这样是否漏算了呢?没错,漏算了(1,1),补上

线性(欧拉)筛&amp;欧拉函数

线性筛法 what is 线性筛??就是基于最基本的筛法的优化. 在基础的筛法上,我们发现有的数字会被重复筛,例如6既会被2枚举到也会被3枚举到,必然有重复运算. 我们的做法就是让每一个数的最小因数筛. \(FOR\) \(EXAMPLE:\) 有一个数\(2 * 2 * 3 * 5\) 有另一个数 \(3 * 3 * 3* 5\) 那么第一个数枚举到3的话,筛到的数字是\(2 * 2 * 3 * 3 * 5\) 但是在第二个数字再次枚举的时候 枚举到2时 也会枚举到\(2 * 2 * 3 *