设f(i)f(i)f(i)是iii的因子的个数,求∑i=1nf(i)\sum_{i=1}^nf(i)∑i=1nf(i)
考虑每个可以对答案造成贡献的因子d,对于每个d来说有⌊nd⌋\lfloor\frac{n}{d}\rfloor⌊dn⌋个数可以让d作为因子,因此d对答案的贡献是⌊nd⌋\lfloor\frac{n}{d}\rfloor⌊dn⌋,因此有
∑i=1nf(i)=∑i=1n⌊ni⌋\sum_{i=1}^nf(i)=\sum_{i=1}^n\lfloor\frac{n}{i}\rfloori=1∑nf(i)=i=1∑n⌊in⌋
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n;
ll solve(ll n){
ll ans = 0;
for(ll l = 1, r = 0; l <= n; l = r+1)
r = n/(n/l), ans += (r-l+1)*(n/l);
return ans;
}
int main(){
scanf("%lld", &n);
printf("%lld", solve(n));
return 0;
}