分析

读完题分析一下发现是要我们求 。我们可以发现 最多也只有 种取值,而且取值连续。那么我们考虑数论分块。至于数论分块的证明我这里放个网址 这个 有非常优秀的证明,便不加赘述。

代码

#include<bits/stdc++.h>
using namespace std;
#define LL long long
LL a,b,ans;
int main() {
    cin >> a >> b;a--;
    for(LL l = 1,r = 1;l <= b;l = r + 1) r=b/(b/l),ans += (r-l+1)*(b/l);
    for(LL l = 1,r = 1;l <= a;l = r + 1) r=a/(a/l),ans -= (r-l+1)*(a/l);
    cout << ans << endl;  
}