举例:
(当i比k大时,即在表格中,i在k的左面)
则左端点为l时,右端点为r,(l<=r)
那么在一段区间内[l,r],所求的值都是一样的,减少了循环的次数
#include<bits/stdc++.h>
using namespace std;
long long int n,res;
int main( )
{
cin>>n;
int l=1,r=0;
while(l<=n && r<=n){
r=n/(n/l);
long long int value=n/l;
res+=(r-l+1)*value;
l=r+1;
}
cout<<res;
return 0;
}