zoukankan      html  css  js  c++  java
  • [算法模板]莫比乌斯反演

    莫比乌斯反演

    先安利一下隔壁lsj大佬的博客:lsj-莫比乌斯反演-让我们从基础开始

    在lsj大佬的博客里有一个比较重要的公式证明:

    (d(ij)=displaystylesum_{xmid i}sum_{ymid j}[gcd(x,y)=1])

    莫比乌斯函数

    [mu(u)=left{egin{split} &1& ext{若}n=1\ &(-1)^k& ext{若}n ext{无平方因子数,且}n=p_1p_2cdots p_k\ &0& ext{若}n ext{有大于1的平方因数} end{split} ight. ]

    (mu)函数性质:(displaystylesum _{dmid n} mu(d)=[n=1])

    (phi)函数性质:(displaystylesum _{dmid n}phi (d)=n)

    显然:

    (displaystylesum _{dmid gcd(i,j) } mu(d)=[gcd(i,j)=1])

    (displaystylesum _{dmid gcd(i,j)}phi (d)=gcd(i,j))

    筛法

    莫比乌斯函数可以用线性筛筛出

    代码引自litble-初涉莫比乌斯反演(附带例题)

    void init(){
        miu[1]=1;
        for(int i=2;i<=100000;i++){
            if(!is[i]){pri[++tot]=i;miu[i]=-1;}
            for(int j=1;j<=tot;j++){
                int k=pri[j]*i;if(k>100000)break;
                is[k]=1;
                if(i%pri[j]==0){miu[k]=0;break;}
                else miu[k]=-miu[i];
            }
        }
    }
    

  • 相关阅读:
    7、猜年龄
    6、continue语句
    5、break语句
    4、while循环练习
    poj 2378
    poj 2342
    poj 2287
    poj 2228
    poj 1191
    srm 578 dv2 1000pt
  • 原文地址:https://www.cnblogs.com/GavinZheng/p/11097983.html
Copyright © 2011-2022 走看看