C++ 计算适当因子之和的函数

C++ 计算适当因子之和的函数,c++,math,C++,Math,我在SPOJ上遇到了一个问题,要求用户计算一个数(n)模与另一个数(m)的因子之和 在计算是否使用此函数时,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

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

在计算是否使用此函数时,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;
}
inti=0;
ll-prod=1;
while(seve[i]*seve[i]1)
{
产品*=n+1;
prod%=mod;
}
这里prod是最终的和,seive[]存储素数,modpow是幂模函数。

找到n的因子,然后使用计算n的因子之和,将所有乘积取模m。在你的问题n<109中,一个简单的基于试除法的因式分解函数可能就足够了


如果需要其他帮助,请提问。

您的程序使用什么语言?(为该语言添加标记)。“ll”是什么类型的?你能给出完整的程序吗,包括seive的声明以及定义ll或modpow所需的任何内容?你对此感到抱歉。LL是C++中的长It。这是完整的程序:Ya,没关系,但是我找不到函数中的一个错误来计算总和。这方面的任何帮助都将是巨大的。:)