找出小於N的所有因子的和,N比較大,很明顯要打表來做,不然肯定會超時
方法就是枚舉范圍內每個整數,然後再枚舉范圍內這個整數的所有的倍數,加上這個數
因為這個整數的倍數中一定含有這個整數因子,這樣速度比枚舉判斷是否%==0快的多
如果用取余來判斷會超時,另外同樣的方法如果用cin,cout來輸入輸出一樣也會超時
最好采用c語言的輸入輸出的格式
貼一下自己的代碼哈
#includeusing namespace std; const int MAXN = 500000; int a[MAXN]; int main() { #ifdef LOCAL freopen("input.txt" , "r" , stdin); #endif for(int i=2; i<=MAXN; ++i) { for(int j=2; j*i<=MAXN ;++j) { a[j*i] += i; } } int T; scanf("%d" , &T); while(T--) { int n; scanf("%d" , &n); printf("%d\n" , a[n]+1); } return 0; }