杜教筛

作者: fo0Old | 来源:发表于2018-09-09 20:58 被阅读0次

杜教筛

莫比乌斯函数前缀和

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;
}

相关文章

  • 杜教筛

    杜教筛 莫比乌斯函数前缀和 欧拉函数前缀和(取模)

  • 杜教筛

    杜教筛是对线性筛的优化,用于快速求数论函数前缀和。我们可以使用O(n)的线筛求出一般的数论函数的前缀和,杜教筛可以...

  • 小杜(教4)

    2002年,我信主那一年,听到小杜弟兄的故事。 小杜的故事是听别人说,给我讲他故事的是我的二姥姥,我当时在她家做客...

  • 杜ls教作文

    偶遇对学生作文辅导颇有研究的杜杜老师。 1、一二年级一定要原生态,先坚持记流水账,写完后没有说清楚点地方用abc标...

  • 先下手为强

    先下手为强,诗圣杜老先生教的。

  • 筛筛时间

    为了别人 我才要认识钟表 留心时间 为了自己 我才不在意什么时间 生命之流 尽可任意流淌 看看书呀 听听琴呀 想入...

  • 山河(16)逃出生天

    二十八、玄兵教 夜 内(杜孟飞、唐夕敏、冷无极) Δ伤势好了之后,杜孟飞告别了傅雪凝,穿戴好夜行衣,来玄兵教救唐夕...

  • 工作新感受

    今天带教让我去筛患者,预定了一个尴尬的开始。 筛患者 我第一次去医生的办公室的时候,办公室里面好多人,很多医生聚集...

  • 杜拉拉教的阅读方法

    一年一度的毕业季又来临了,随之来临的几个毕业生也来到了公司,属于杜拉拉管理。怎么带新人可是个头疼的事,杜拉拉...

  • 废气治理技术之分子筛吸附脱附设备

    分子筛吸附脱附简介 分子筛吸附脱附是指利用固体分子筛(分子筛目前包括:活性炭分子筛和沸石分子筛),吸附工业废气中的...

网友评论

      本文标题:杜教筛

      本文链接:https://www.haomeiwen.com/subject/cmidgftx.html