0
我必须找到合适的除数N(N < = 20000000)。我已经预先计算了复杂度为O(N * log(N))的这个函数,这需要4秒钟。我如何优化它或任何备用解决方案将被大力接受。合适的除数N的总和
实施例: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式试过,但它需要更多的时间比上述算法。
此问题已得到很好的回答: http://stackoverflow.com/questions/7323572/how-to-find-total-number-of-divisors-upto-n/8337647#8337647 – emilio