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