莫比乌斯函数

莫比乌斯反演

懵懂的女人 提交于 2020-03-08 22:12:57
莫比乌斯函数 求单个莫比乌斯函数 O(sqrt(n)) ll getu(ll x) { ll v = 1; for (int i = 2; i * i <= x; i++) { if (x % i == 0) { v = -v, x /= i; if (x % i == 0) return 0; } } if (x != 1) v = -v; return v; } View Code 线性筛莫比乌斯函数 O(n) // 莫比乌斯函数线性筛 // 同时求出素数表 int prime[maxn], prime_tot; int is_prime[maxn]; int mu[maxn]; void pre_calc(int lim) { mu[1] = 1; for (int i = 2; i <= lim; i++) { if (!is_prime[i]) { prime[++prime_tot] = i; mu[i] = -1; } for (int j = 1; j <= prime_tot; j++) { if (i * prime[j] > lim) break; is_prime[i * prime[j]] = 1; if (i % prime[j] == 0) { mu[i * prime[j]] = 0; break; } else mu[i * prime[j]] =

[数论]莫比乌斯反演3

杀马特。学长 韩版系。学妹 提交于 2020-03-01 08:53:41
索引 莫比乌斯反演1 定理 莫比乌斯反演2 证明 莫比乌斯反演3 技巧 实用技巧 1、 \[[gcd(i,j)=1]=\sum_{d|gcd(i,j)}\mu(d)\] 证明 根据性质1,其实就是莫比乌斯函数的定义 莫比乌斯函数的性质1 \[\sum_{d|n}\mu(d)=[n=1]\] 那么我们将gcd(i,j)带入n即可得到 \[\sum_{d|gcd(i,j)}\mu(d)=[gcd(i,j)=1]\] 证毕。 2、 求下式 \[\sum_{j=1}^{n}\sum_{j=1}^{m}gcd(i,j),(n<m)\] 因为 \[\sum_{d|n}\varphi(d)=n\] 我们按照套路将上式的要求的式子的 \(n\) 替换为 \(gcd(i,j)\) 即原式变换为: \[\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|gcd(i,j)}\varphi(d)\] 按照套路将d分类得 \[\sum_{d=1}^{n}\varphi(d)\times\lfloor\frac{n}{d}\rfloor\times\lfloor\frac{m}{d}\rfloor\] 结束。 3、 这是套路3(见下)的简化版 将一般求和式转为枚举式 例如下式: \[\sum_{i=1}^{\lfloor\frac{a}{d}\rfloor}\sum_{j=1}^{

【算法】莫比乌斯反演

旧城冷巷雨未停 提交于 2020-03-01 06:53:15
  在正文开始之前感谢一下几篇论文 & 博客以及一位大佬 remoon_OFN 。   1. 2016国家集训队论文任之洲《积性函数求和的几种方法》   2. PoPoQQQ 的相关题解(%%%)。   3. 当然除此之外还有很多……   其实两三个月之前我就已经接触过反演了,但在那个时候对反演完全是一种懵逼的状态。重点其实还是在于通过自己多推式子,多化式子来理解和接受卷积的这样一种运算。当然,丰富的数论知识也是必不可少的(有时候一些题目会用到一些奇奇怪怪的性质)。实际上,反演就是已知一个函数 \(g\) 与 \(f\) 的关系,要通过 \(f\) 求出 \(g\),或通过 \(g\) 求出 \(f\)。反演,可以理解为一种变换。那么,莫比乌斯反演就是一种特别的变换: 若我们有 \(f = 1 * g\) 则有 \(g = \mu * f\)   这是一种式子的变形,当原本的式子中出现了\(f\) 或 \(g\) 的时候,可以考虑用另一个函数来替换它,从而找到一个易求得的式子。常用的卷积关系有如下几种: \(\mu * 1 = \epsilon \) \(\phi * 1 = id\) \(id * \mu = \phi\)   (以上式子中的函数均为积性函数)。注意:积性函数的卷积依然为积性函数,并且卷积满足结合律, 交换律,分配律。  

蒟蒻林荫小复习——莫比乌斯反演

梦想与她 提交于 2020-02-27 01:54:41
莫比乌斯反演 积性函数:对于函数f,如果有质数p,q,使得f(p)f(q)=f(pq),则函数f为积性函数 设积性函数f,有和函数   显然,F由f决定,这种关系是否可以反过来?   F(1)=f(1)F(1)=f(1)   F(2)=f(1)+f(2)F(2)=f(1)+f(2)   F(3)=f(1)+f(3)F(3)=f(1)+f(3)   F(4)=f(1)+f(2)+f(4)F(4)=f(1)+f(2)+f(4)   F(5)=f(1)+f(5)F(5)=f(1)+f(5)   F(6)=f(1)+f(2)+f(3)+f(6)F(6)=f(1)+f(2)+f(3)+f(6)   F(7)=f(1)+f(7)F(7)=f(1)+f(7)   F(8)=f(1)+f(2)+f(4)+f(8)F(8)=f(1)+f(2)+f(4)+f(8) 可以发现,我们可以由F去反推f 形式化的说,f(x)等于形式上一些±F(x/d)的和 则可能有这样的式子: 其中μ是算术函数,如果等式成立,则 μ(1)=1 μ(2)=-1 μ(3)=-1 μ(4)=0 μ(5)=-1 μ(6)=1 当有质数p时,f(p)=F(p)-F(1) 则我们可以发现,μ(1)=1,对于任何一个质数,μ(p)=-1 因为F(p^2)=f(1)+f(p)+(fp^2),f(p^2)=F(p^2)-F(p) 则μ(p^2

莫比乌斯反演

怎甘沉沦 提交于 2020-02-13 23:47:24
莫比乌斯反演 莫比乌斯反演是数论中的重要内容。对于一些函数 \(f(n)\) ,如果汉南直接求出它的值,而容易求出其背书和或约数和 \(g(n)\) ,那么可以通过莫比乌斯反演简化运算,求得 \(f(n)\) 的值。 我们需要一些前置知识: 积性函数、狄利克雷卷积、莫比乌斯函数 前置芝士 引理1 \[ \forall a,b,c \in \mathbb{Z},\lfloor \frac{a}{bc} \rfloor = \lfloor \frac{\lfloor \frac{a}{b} \rfloor}{c} \rfloor \] 略证: \[ \frac{a}{b} = \lfloor \frac{a}{b} \rfloor + r(0 \leq r < 1) \implies \lfloor \frac{a}{bc} \rfloor = \lfloor \frac{a}{b} * \frac{1}{c} \rfloor = \lfloor \frac{1}{c}(\lfloor \frac{a}{b} \rfloor + r) \rfloor = \lfloor \frac{\lfloor \frac{a}{b} \rfloor}{c} + \frac{r}{c} \rfloor = \lfloor \frac{\lfloor \frac{a}{b} \rfloor}{c}

莫比乌斯函数

左心房为你撑大大i 提交于 2020-01-28 00:49:19
【问题描述】 莫比乌斯函数,数论函数,由德国数学家和天文学家莫比乌斯(Möbius ,1790–1868)提出。梅滕斯(Mertens)首先使用μ(n)作为莫比乌斯函数的记号。而据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数。莫比乌斯函数在数论中有着广泛应用。 莫比乌斯函数完整定义的通俗表达: 1)莫比乌斯函数μ(n)的定义域是N 2)μ(1)=1 3)当n存在平方因子时,μ(n)=0 4)当n是素数或奇数个不同素数之积时,μ(n)=-1 5)当n是偶数个不同素数之积时,μ(n)=1 例如: μ(8),μ(12),μ(18) = 0 μ(2),μ(3),μ(30) = -1 μ(1),μ(6),μ(10) = 1 给出一个数n, 计算μ(n)。 【输入形式】 输入一行一个整数n 【输出形式】 输出μ(n) 【样例输入】 12 【样例输出】 0 【示例代码】 # include <iostream> # include <cmath> using namespace std ; int pfyz ( int ) ; int prime ( int ) ; int main ( ) { int n , m = 0 , i = 2 , j , a , b , s , f = 0 , t = 0 ; cin >> n ; s = n ; if ( pfyz ( n ) ==

莫比乌斯反演

独自空忆成欢 提交于 2020-01-26 18:09:19
莫比乌斯函数线性筛: const int maxm = 1 e6 + 5 ; int notprime [ maxm ] ; int prime [ maxm ] , cnt ; int mob [ maxm ] ; void Minit ( ) { mob [ 1 ] = 1 ; for ( int i = 2 ; i < maxm ; i ++ ) { if ( ! notprime [ i ] ) { //如果是素数 prime [ cnt ++ ] = i ; mob [ i ] = - 1 ; } for ( int j = 0 ; j < cnt ; j ++ ) { if ( prime [ j ] * i >= maxm ) break ; notprime [ prime [ j ] * i ] = 1 ; mob [ prime [ j ] * i ] = i % prime [ j ] ? - mob [ i ] : 0 ; if ( i % prime [ j ] == 0 ) break ; } } } 莫比乌斯函数性质: μ是莫比乌斯函数 1.∑μ(d) = [n==1] (d|n,即d是n的因子) 2. ∑(μ(d)/d) = (ϕ(n)/n) (d|n,ϕ是欧拉函数),这个性质把莫比乌斯函数和欧拉函数联系起来了 莫比乌斯反演: P2257

2020年1月19日训练日记

你说的曾经没有我的故事 提交于 2020-01-26 06:07:55
这两天的话没怎么做题,主要是在补知识点。数论三的题太难了,看了看实在是不会,就只能先从知识点开始补,数论三里面好多题都是莫比乌斯反演的题,就补了好久的莫比乌斯反演,现在对莫比乌斯反演的话也算是有了个基本的了解。还有一些题是关于莫队算法的,看了几篇博客还是有点懵这两天再多看几篇材料。最近还看了关于杜教筛的一些知识。博客上说杜教筛是以低于线性的时间复杂度来计算积性函数的前缀和的筛法,但是就杜教筛的应用的话,还不是很清楚。不在学校里了感觉也得要抓紧了,感觉时间真的不够了,还有很多东西都还没有掌握。 来源: CSDN 作者: 爱吃老谈酸菜的DV 链接: https://blog.csdn.net/weixin_43460224/article/details/104046022

数学--数论--莫比乌斯反演

核能气质少年 提交于 2020-01-18 01:20:18
一、莫比乌斯反演涉及知识 1.莫比乌斯函数 2.莫比乌斯的线性筛法 3.狄利克雷卷积 4.莫比乌斯反演详解 5.整除法分块 6.杜教筛 二、μ 莫比乌斯函数定义 μ ( n ) = { 1 n=1 ( − 1 ) k n= P1*P2*P3*...*Pk(其中P是质数) 0 else其他情况 μ(n)=\begin{cases} 1& \text{n=1}\\ (-1)^k& \text{n= P1*P2*P3*...*Pk(其中P是质数)}\\ 0& \text{else其他情况} \end{cases} μ ( n ) = ⎩ ⎪ ⎨ ⎪ ⎧ ​ 1 ( − 1 ) k 0 ​ n=1 n= P1*P2*P3*...*Pk( 其中 P 是质数 ) else 其他情况 ​ 也就是说如果n有平方质因子的话就为0。 三、莫比乌斯线性筛 int prime [ MAXN ] , prime_tot ; bool isprime [ MAXN ] ; int mu [ MAXN ] ; void pre_calc ( int limt ) { mu [ 1 ] = 1 ; for ( int i = 2 ; i <= limt ; i ++ ) { if ( ! isprime [ i ] ) { prime [ prime_tot ] = i ; mu [ i ] = - 1 ; }

2017-8-17训练日记

天大地大妈咪最大 提交于 2020-01-04 23:24:54
   今天上午再补题,计算几何,看了一下对于极角排序的四种方式:叉积,complex类,atan2()函数,象限四种。   再就是看了五道数学题,容斥,积分,欧拉函数,对了今天还有莫比乌斯反演没看。中午吃过饭就开始,打比赛了,题目是真的长,按照前几场的惯例1011是水题,结果半小时过去了,还是没有队伍提交,恐怖,大佬真的沉得住气,大概推了两个小时,终于推出来公式,A了之后,看了1008和1002但是都没有思路,1002心思打表,但是太大了,后来才知道是莫比乌斯反演,凡是这个我还没看,1008谁知道是水题....   这几天的状态不错,每天的时间都能充分利用,并且知道该干嘛了。 来源: https://www.cnblogs.com/wuwangchuxin0924/p/7384609.html