加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

关于Mobius反演

发布时间:2020-12-14 04:24:08 所属栏目:大数据 来源:网络整理
导读:欧拉函数 (varphi) (varphi(n)=) 表示不超过 (n) 且与 (n) 互质的正整数的个数 [varphi(n)=ncdot prod_{i=1}^{s}(1-frac{1}{p_i})] 其中 (n = {p_1}^{alpha1} cdot {p_2}^{alpha2} cdots {p_s}^{alpha s} cdot) 是 (n) 的标准分解

欧拉函数 (varphi)

(varphi(n)=)表示不超过 (n) 且与 (n) 互质的正整数的个数
[varphi(n)=ncdot prod_{i=1}^{s}(1-frac{1}{p_i})]
其中 (n = {p_1}^{alpha1} cdot {p_2}^{alpha2} cdots {p_s}^{alpha s} cdot)(n) 的标准分解。
由此易见 (text{Euler}) 函数是积性函数。

线性求 (text{Euler}) 函数:

#define int long long
int phi[3000005];
int n=3000000;
bool mark[3000005];
int prime[1000005];
int tot;
void getphi()
{
    phi[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(mark[i]==false)
        {
            prime[++tot]=i;
            phi[i]=i-1;
        }
        for(int j=1;j<=tot;j++)
        {
            if(i*prime[j]>n)
            {
                break;
            }
            mark[i*prime[j]]=true;
            if(i%prime[j]==0)
            {
                phi[i*prime[j]]=phi[i]*prime[j];
                break;
            }
            phi[i*prime[j]]=phi[i]*phi[prime[j]];
        }
    }
    for(int i=1;i<=n;i++)
    {
        phi[i]+=phi[i-1];
    }
}

(text{Mobius})函数 (mu(n))

[ mu(n)= begin{cases} 1&n=1 0&ntext{ 含有平方因子} (-1)^k&ktext{ 为 }ntext{ 的本质不同质因子个数} end{cases} ]
证明:
[ varepsilon(n)= begin{cases} 1&n=1 0&nneq 1 end{cases} ]

其中 (displaystylevarepsilon(n)=sum_{dmid n}mu(d))(varepsilon=mu*1)

(displaystyle n=prod_{i=1}^k{p_i}^{c_i},n‘=prod_{i=1}^k p_i)

那么 (displaystylesum_{dmid n}mu(d)=sum_{dmid n‘}mu(d)=sum_{i=0}^k C_k^icdot(-1)^k)

根据二项式定理,易知该式子的值在 (k=0)(n=1) 时值为 (1) 否则为 (0) ,这也同时证明了 (displaystylesum_{dmid n}mu(d)=[n=1])

#define int long long
int mu[3000005];
int n=3000000;
bool mark[3000005];
int prime[1000005];
int tot;
void getmu()
{
    mu[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(mark[i]==false)
        {
            prime[++tot]=i;
            mu[i]=-1;
        }
        for(int j=1;j<=tot;j++)
        {
            if(i*prime[j]>n)
            {
                break;
            }
            mark[i*prime[j]]=true;
            if(i%prime[j]==0)
            {
                mu[i*prime[j]]=0;
                break;
            }
            mu[i*prime[j]]=-mu[i];
        }
    }
}

(text{Dirichlet})卷积

(text{ID}:text{ID(i)=i})
(text{1}:text{1(i)=1})
定义两个数论函数的(text{Dirichlet})卷积为:
[(f*g)(n)=sum_{d|n}({f(d)times g(frac{n}{d})}) ]
性质:(text{Dirichlet})卷积满足交换律和结合律。
单位元:(varepsilon)(varepsilon(n)=[n==1]),任何函数卷(varepsilon)都为其本身.
(1*mu=varepsilon)
(mu * text{ID} = varphi)
(1*text{ID}=sigma)

莫比乌斯反演

公式:设 (f(n),g(n)) 为两个数论函数。
如果有
[ f(n)=sum_{dmid n}g(d) ]
那么有
[ g(n)=sum_{dmid n}mu(frac{n}{d})f(d) ]
证明:
原命题等价于:已知 (f=g*1) ,证明 (g=f*mu)
显然: (f*mu=g*1*mu= g*varepsilon=g) (其中 (1*mu=varepsilon)

同时,还有另一种(text{Mobius})反演:
如果有
[ f(n)=sum_{nmid d}g(d) ]
那么有
[ g(n)=sum_{nmid d}mu(frac{d}{n})f(d) ]

柿子简化

[sum_{i=1}^{n}{[gcd(i,n)==d]} ]
[ = sum_{i=1}^{frac{n}{d}}{[gcd(i,frac{n}{d})==1]}]
[=varphi(frac{n}{d}) ]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读