计算固有因子和的函数

function that calculates sum of proper divisors

本文关键字:和的 函数 计算      更新时间:2023-10-16

我在SPOJ上遇到了一个问题,要求用户计算一个数(n)与另一个数(m)的模的除数之和

http://www.spoj.com/problems/HDEVIL/

在计算是否使用此函数时,SPOJ给出WA。我找不到这个功能的问题。任何建议都是欢迎和感激的。

int i=0;
ll prod=1;
while(seive[i]*seive[i]<=n)
{
    int p=seive[i],j=1;
    ll count=1;
    while(n%p==0)
    {
        count+=modpow(p,j,mod);
        j++;
        n/=p;
    }
    prod=((prod%mod)*(count%mod))%mod;
    i++;
}
if(n>1)
{
    prod*=n+1;
    prod%=mod;
}

prod为最终和,seve[]存储质数,modpow为幂模函数

求出n的因数,然后用除数求和函数求出n的因数之和,取所有乘积对m取模。在你的问题n <109,因此基于试除法的简单因子函数可能就足够了。

如果你需要额外的帮助,请提问。