关于线性筛莫比乌斯函数
  • 板块学术版
  • 楼主__vector__
  • 当前回复2
  • 已保存回复4
  • 发布时间2025/1/4 15:10
  • 上次更新2025/1/4 19:31:13
查看原帖
关于线性筛莫比乌斯函数
507348
__vector__楼主2025/1/4 15:10

f(x)=dxμ(d)μ(xd)f(x) = \sum\limits_{d|x}\mu(d)\mu(\frac{x}{d})

这个函数显然是积性函数,但是对于线性筛求解方法,我查到了一种,大概长这样:

 REP(i,2,N-1) {
        if (!vis[i]) p[++cnt]=i,mu[i]=-1,mu2[i]=-2;
        for (int j=1,t; j<=cnt&&i*p[j]<N; ++j) {
            vis[t=i*p[j]] = 1;
            if (i%p[j]==0) {
                mu[t] = 0;
                if (i/p[j]%p[j]==0) mu2[t] = 0;
                else mu2[t] = 1;
                break;
            }
            mu[t] = -mu[i];
            mu2[t] = -2*mu2[i];
        }
    }

其中 mu 是莫比乌斯函数, mu2 就是 ff 函数。

我不明白对于 i%p[j]==0 的 if 语句里面为什么这样是对的。

我可以理解 if (i/p[j]%p[j]==0) mu2[t] = 0;,但为什么如果 p[j] 没有出现超过两次,那么 mu2[t]=1?

2025/1/4 15:10
加载中...