杜教筛

杜教筛

莫比乌斯函数前缀和

const int __=5e6;  //n^(2/3)项

bool pri[__+5];
int mu[__+5],num[__+5];
ll sum[__+5];

void mobius()
{
    mu[1]=sum[1]=1;
    pri[1]=true;
    for(int i=2;i<=__;i++)
    {
        if(!pri[i])
        {
            num[++num[0]]=i;
            mu[i]=-1;
        }
        for(int j=1;j<=num[0] && i*num[j]<=__;++j)
        {
            int &p=num[j];
            pri[i*p]=true;
            if(!(i%p)){mu[i*p]=0;break;}
            mu[i*p]=-mu[i];
        }
        sum[i]=sum[i-1]+mu[i];
    }
}

unordered_map<ll,ll>dp;

ll cal(ll x)
{
    if(x<=__)return sum[x];
    if(dp[x])return dp[x];
    ll res=1;
    for(ll l=2,r;l<=x;l=r+1)
    {
        r=x/(x/l);
        res-=(r-l+1)*cal(x/l);
    }
    return dp[x]=res;
}

欧拉函数前缀和(取模)

const int __=5e6;
const int mod=1e9+7;
const int inv2=(mod+1)/2;

ll md(ll x)
{
    if(x<=-mod || x>=mod)
        x%=mod;
    if(x<0)x+=mod;
    return x;
}

int phi[__+5],num[__+5];
ll sum[__+5];

void euler()
{
    phi[1]=sum[1]=1;
    for(int i=2;i<=__;i++)
    {
        if(!phi[i])
        {
            num[++num[0]]=i;
            phi[i]=i-1;
        }
        for(int j=1;j<=num[0] && i*num[j]<=__;++j)
        {
            int &p=num[j];
            if(!(i%p))
            {
                phi[i*p]=phi[i]*p;
                break;
            }
            phi[i*p]=phi[i]*(p-1);
        }
        sum[i]=sum[i-1]+phi[i];
        if(sum[i]>=mod)sum[i]-=mod;
    }
}

unordered_map<ll,ll>dp;

ll cal(ll x)
{
    if(x<=__)return sum[x];
    if(dp[x])return dp[x];
    ll res=md(md((md(x)+1ll)*md(x))*inv2);
    for(ll l=2,r;l<=x;l=r+1)
    {
        r=x/(x/l);
        res=md(res-md(md(r-l+1)*cal(x/l)));
    }
    return dp[x]=res;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 归去来兮。 1.1 说明 本篇为《挑战程序设计竞赛(第2版)》[http://www.ituring.com.cn...
    尤汐Yogy阅读 14,498评论 0 160
  • 第 1 章 最短路(负责人:沈楚炎) 1 [视频]最短路1:SPFA算法(题号1088) 2 最短路2:道路重建(...
    bozjason阅读 1,736评论 1 3
  • 近些年来,我一直在寻找自我的定位,尤其是从去年的重大变故之后,由于一些原因我离开了我的第一份工作,回到家乡找了...
    Doreenaa阅读 344评论 0 0
  • 为什么大多数人没有度过七年之痒?我们不了解的七年之痒! “七年之痒”是个舶来词,我对他的理解是说许多事情发展到第七...
    成都业之峰装饰阅读 588评论 0 2
  • 我的青春里面有着妈妈的模样与气息。 越长大越发现,女儿不止像父亲,也可以像妈妈。 和大多数妈妈不太一样,我有一个很...
    七月上的冥王星阅读 121评论 0 1