zoukankan      html  css  js  c++  java
  • 莫比乌斯函数学习笔记

    本文部分公式来自这篇dalao的博客


    什么是莫比乌斯函数

    现在有一个数(x)
    把这个(x)分解质因数:
    (large x=prod_{i=0}^{k}p_i^{t_i})
    有:
    (large mu (n) =egin{cases} &1; if ; n=1 \ &0 ; if ; exists t_{i}> 1 \ &(-1)^{k} ; if ; forall t_{i}= 1 end{cases})


    怎么算莫比乌斯函数

    莫比乌斯函数是个积性函数,因此我们可以通过欧拉筛在(O(n))的时间内算出。
    代码大概长这样w

    int prime[N],p_tot,miu[N];
    bool ntPrime[N];
    void GetPrime(int n)
    {
    	miu[1]=1;
    	ntPrime[1]=true;
    	for(int i=2;i<=n;i++)
    	{
    		if(ntPrime[i]==false)
    			prime[++p_tot]=i,miu[i]=-1;
    		for(int j=1;j<=p_tot and i*prime[j]<=n;j++)
    		{
    			ntPrime[i*prime[j]]=true;
    			if(i%prime[j]==0) 
    			{
    				miu[i*prime[j]]=0;
    				break;
    			}
    			miu[i*prime[j]]=miu[i]*miu[prime[j]];
    		}
    	}
    }
    

    莫比乌斯函数有什么性质

    1.(large sum_{dmid n}mu(d) = egin{cases} 1 & ext{ if } n=1 \ 0 & ext{ if } n> 1 end{cases})

    证明:
    对于第一种讨论(n=1):显然
    对于第二种讨论(n>1),我们可以对它的因子进一步分类讨论,分为两类,第一类是这个因子中有某个质因数出现次数超过了两个,那么显然它的(mu=0);对于另外那一部分,我们可以这样写:
    (sum_{d|x}μ(d)=sum_{i=0}^kC_k^i*(-1)^i)[注1] (=) ((1+(-1))^k)[注2] (= 0)
    注1:我们这里相当于对(x)的质因数做排列组合来组合出(x)的因数
    注2:这里运用到了二项式定理,省略了一步,中间省略的步骤为:(sum_{i=0}^kC_k^i*(-1)^i*(1)^{k-i})
    证毕

    2.(large frac{varphi(n)}{n}=sum_{d|n}frac{μ(d)}{d})

    证明:不会证,会证后补(咕咕咕)

    3.莫比乌斯函数是一个积性函数,有(large μ(a*b)=μ(a)*μ(b) quad (gcd(a,b)=1))


    扩展:莫比乌斯反演

    (large f(n)=sum_{d|n}g(d))

    (large g(n)=sum_{d|n}μ(d)*f(frac{n}{d}))
    上面两个式子可以互相推导

    证明:
    我不会证,会了再补(咕咕咕)
    可以参考这个dalao的博客

  • 相关阅读:
    Luogu P4246 [SHOI2008]堵塞的交通(线段树+模拟)
    Luogu P2619 [国家集训队2]Tree I(WQS二分+最小生成树)
    Luogu P2042 [NOI2005]维护数列(平衡树)
    Luogu P1052 过河(dp)
    Luogu P1041 传染病控制(搜索)
    Luogu P2717 寒假作业(平衡树)
    Luogu P2822 组合数问题(前缀和)
    Luogu P2827 蚯蚓(模拟)
    随机图片测试
    Luogu P2458 [SDOI2006]保安站岗(树形dp)
  • 原文地址:https://www.cnblogs.com/GoldenPotato/p/10299630.html
Copyright © 2011-2022 走看看