abc206
\(求 x,y\in[L,R],有多少个(x,y)对,满足g=gcd(x,y)\ne 1,x \ne g,y \ne g\)
\(由于题目有三个限制,考虑把限制分开 \\\)
\(g \ne 1 即是g \ge 2 \\\)
\(显然g \ge 2 不好求,而U-[g=1] 好求 \\\)
\(x \ne g \ and \ y \ne g 的反面即是 x=g \ or \ y=g \\\)
\(也就是 [x=g]+[y=g]-[x=g \ and \ y=g] \\\)
\(对于U-[g=1],U=(R-L+1)^{2}\\
[g=1]=\sum_{x=L}^{R}\sum_{y=L}^{R}[gcd(x,y)=1]\\ =\sum_{d=1}^{R}\mu(d)\sum_{x=L}^{R}\sum_{y=L}^{R}[d|x][d|y] \\ = \sum_{d=1}^{R}\mu(d)(\frac{R}{d}-\frac{L-1}{d})^{2}\\\)
\(第二个限制为\sum_{g=max(2,L)}^{R}2(\lfloor \frac{R}{g} \rfloor -
\lfloor \frac{L-1}{g}\rfloor ) -1 \\\)
\(综上所述,答案即为\\
(R-L+1)^2-\sum_{d=1}^{R}\mu(d)(\frac{R}{d}-\frac{L-1}{d})^{2}-\sum_{g=max(2,L)}^{R}2(\lfloor \frac{R}{g} \rfloor -\lfloor \frac{L-1}{g}\rfloor ) -1\)
#include <bits/stdc++.h>
using i64 = long long;
// [0, n]
std::vector<int> moebius(int n) {
n++;
std::vector<int> pr(n), sq(n);
using ll = long long;
for (ll i = 2; i < n; i++) {
if (pr[i])
continue;
for (ll j = i; j < n; j += i)
pr[j] = i;
for (ll j = i * i; j < n; j += i * i)
sq[j] = 1;
}
std::vector<int> sign(n, 0);
sign[1] = 1;
for (ll i = 2; i < n; i++) {
if (sq[i])
continue;
sign[i] = -sign[i / pr[i]];
}
return sign;
}
void solve()
{
int L,R;std::cin>>L>>R;
i64 ans=1LL*(R-L+1)*(R-L+1);
auto mo=moebius(R+1);
for(int d=1;d<=R;d++){
i64 x=R/d-(L-1)/d;
ans-=1LL*mo[d]*x*x;
}
for(int d=std::max(2,L);d<=R;d++){
ans-=(R/d-(L-1)/d)*2-1;
}
std::cout<<ans<<'\n';
}
int main()
{
std::cin.tie(nullptr)->sync_with_stdio(false);
solve();
}