Fork me on GitHub

求因子个数和因子和

//求因子个数
int Facnt(int n)
{
    int res = 1;
    for(int i=2;i*i<=n;i++)
    {
        if(n%i == 0)
        {
            int cnt = 0;
            do
            {
                n /= i;
                cnt++;
            }while(n%i==0);
            res *= (cnt+1);
        }
    }
    if(n > 1)
        res = 2*res;
    return res;
}

//求因子和
int Facsum(int n)
{
    int res = 1;
    for(int i=2;i*i<=n;i++)
    {
        if(n%i==0)
        {
            int cnt = 1;
            do
            {
                n /= i;
                cnt *= i;
            }while(n%i==0);
            res = res*(cnt*i-1)/(i-1);
        }
    }
    if(n > 1)
        res *= (n+1);
    return res;
}

 

posted @ 2014-07-04 23:27  whatbeg  阅读(543)  评论(0编辑  收藏  举报