簡體   English   中英

計算適當除數之和的函數

[英]function that calculates sum of proper divisors

我在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是最終的總和,而seive []存儲質數,而modpow是功率模函數。

找到n的因數,然后使用除數求和函數n的所有乘積取模m來計算n的除數之和。 在您的問題n <10 9中 ,因此基於試驗除法的簡單分解因數功能可能就足夠了。

詢問是否需要其他幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM