for(int i=1;i<=n;i++) ans+=n/i; 复杂度O(n)
下面代码复杂度为O( sqrt(n) )
long long getsum(long long nn)
{
long long ans=0;
long long tmp,r,l;
for(long long i=nn;i>=1;)
{
tmp=nn/i;
r=i;
l=nn/(tmp+1)+1;
ans+=(r-l+1)*tmp;
i=nn/(tmp+1);
}
return ans;
}