N的适当除数之和

时间:2016-04-28 14:31:27

标签: number-theory

我必须找到N的适当除数之和(N <= 20000000)。我已经预先计算了这个函数,其复杂度为O(N * log(N)),最多需要4秒。如何优化它或任何替代解决方案将被大大接受。

示例:N = 10答案是86,N = 1000答案是823080

int f(){
   for(LL i = 1; i <= m; i++){
       for(LL j = i; j <= m; j += i){
           ans[j] += i;
       }
   }
   for(LL i = 2; i <= m; i++)     ans[i] += ans[i - 1];
}

我也尝试使用素数因子分解和this公式,但它需要比上述算法更多的时间。

1 个答案:

答案 0 :(得分:0)

我无法编辑我以前的评论,只是说我的评论引用的问题有点不同,但稍微调整它也回答了这个问题。 只需将除数本身在循环内部相乘。