zoukankan      html  css  js  c++  java
  • 【数论】关于gcd的一个积累

    (Large f(n)=sum_{i=1}^{n}gcd(i,n))



    (g(n)=gcd(i,n)) ((1leq ileq n))

    (n=ab) ,且(gcd(a,b)=1),则有 (g(n)=g(a)g(b)),所以 (g) 是积性函数;

    又,由于积性函数的和也是积性函数,所以 (f(n)=sum_{i=1}^{n}gcd(i,n)) 也是积性函数。

    (n) 的唯一分解式是 :

    [n=p_1^{a_1}p_2^{a_2}...p_n^{a_n} ]

    则:

    [f(n)=f(p_1^{a_1}p_2^{a_2}...p_k^{a_k})=prod_{i=1}^k f(p_i^{a_i}) ]

    对于 (phi(n))有:

    [egin{align*} phi(n)=prod_{i=1}^k(p_i^{a_i}-p_i^{a_i-1}) color{#ddd}{=mprod_{i=1}^k1-frac1{p_i}} end{align*} ]

    对于 (f(p^{a})) 有:

    [egin{align*} f(p^a)&=phi(p^a)+pphi(p^{a-1})+...+p^aphi(1)\ &=(p^a-p^{a-1})+p(p^{a-1}-p^{a-2})+...+p^{a-1}(p-p^0)+p^a\ &=a(p^a-p^{a-1})+p^a end{align*} ]

    所以:

    [egin{align*} f(n)&=f(p_1^{a_1}p_2^{a_2}...p_k^{a_k})\ &=prod_{i=1}^k f(p_i^{a_i})\ &=prod_{i=1}^ka_i(p_i^{a_i}-p_i^{a_i-1})+p_i^{a_i} end{align*} ]



    代码:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn=1e6+5;
    
    inline ll kpow(ll a,ll b)
    {
        ll ans=1;
        while(b)
        {
            if(b&1)ans*=a;
            a*=a;
            b>>=1;
        }
        return ans;
    }
    int pri[maxn+5];
    void init()
    {
        for(int i=2;i<maxn;i++)
        {
            if(!pri[i])pri[++pri[0]]=i;
            for(int j=1;j<=pri[0]&&i*pri[j]<maxn;j++)
            {
                pri[i*pri[j]]=1;
                if(i%pri[j]==0)break;
            }
        }
    }
    int fac[maxn],num[maxn];
    inline ll cal(ll p,ll a){return kpow(p,a)+kpow(p,a-1)*a*(p-1);}
    int main()
    {
        init();
        int n;ll ans=1;
        scanf("%d",&n);
        for(int i=1;pri[i]*pri[i]<=n;i++)
        {
            if(n%pri[i]==0)
            {
                fac[++fac[0]]=pri[i];
                while(n%pri[i]==0)n/=pri[i],num[fac[0]]++;
            }
        }
        if(n>1)fac[++fac[0]]=n,num[fac[0]]=1;
        for(int i=1;i<=fac[0];i++)
            ans*=cal(fac[i],num[i]);
        printf("%lld
    ",ans);
    }
    
  • 相关阅读:
    显示器的分类和主要性能指标
    关闭Win 10 自动更新功能
    MySQL下载安装教程
    经济学十大原理
    西方经济学概述(经济学原理 1 )
    工作表基本操作
    输入和编辑工作表
    因特网概述
    摩尔定律(Moore's Law)
    C 语言编程机制
  • 原文地址:https://www.cnblogs.com/kkkek/p/12554862.html
Copyright © 2011-2022 走看看