[英]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.