莫比乌斯函数线性塞

void mobious(int n)
{
    mu[1]=1;
    FOR(i,2,n)
    {
        if(!vis[i]) pr[++tot]=i,mu[i]=-1;
        for(int j=1;j<=tot&&pr[j]*i<=n;j++)
        {
            int k=pr[j]*i;vis[k]=1;
            if(i%pr[j]==0){mu[k]=0;break;}
            else mu[k]=-mu[i];
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40858062/article/details/81698277