#include<bits/stdc++.h>
using namespace std;
#define int long long
bool isp[1000010];
vector <int> prime;
const int mod=666623333;
void aioutelanisishai(int n)
{
memset(isp,1,sizeof(isp));
isp[1]=0;
for(int i=2;i<=n;i++)
if(isp[i])
{
prime.push_back(i);
for(int k=2;k*i<=n;k++)
isp[i*k]=0;
}
}
vector <int> qp[1000010];//代表从l往后数的第i个数的所有质数
int phi(int x)
{
int ans=x;
for(int i=0;i<qp[x].size();i++)
ans=ans/qp[x][i]*(qp[x][i]-1);
return ans%mod;
}
signed main()
{
aioutelanisishai(1000000);
int l,r;cin>>l>>r;
for(int i=0;i<prime.size();i++)
for(int j=max(2*1ll,(l-1)/prime[i]+1)*prime[i];j<=r;j+=prime[i])
if(j-l>=0)
qp[j-l].push_back(prime[i]);
int ans=0;
for(int i=l;i<=r;i++)
ans=(ans+(i-phi(i-l)%mod))%mod;
cout<<ans%mod;
return 0;
}
为什么又挂了/kk