我的样例都大了一,但是为啥评测是对的,快来个大佬帮忙看看QAQ,记录这里这里
#include<bits/stdc++.h>
using namespace std;
#define M 1000010
#define m 666623333
long long l, r, prime[M], cnt, f[M];
long long ans, phi[M], a[M];
void shai()
{
for(int i = 2;i <= M;i ++)
{
if(!f[i]) prime[++ cnt] = i;
for(int j = 1;j <= cnt && i * prime[j] <= M;j ++)
{
f[i * prime[j]] = 1;
if(i % prime[j] == 0) break;
}
}
}
int main()
{
shai();
cin >> l >> r;
for(long long i = l;i <= r;i ++)
{
phi[i - l] = i;
a[i - l] = i;
}
int j = 1;
while(prime[j] * prime[j] <= r)
{
long long p = prime[j];
long long b = l / p * p + p;
if(l % p == 0) b = l;
for(long long i = b;i <= r;i += p)
{
phi[i - l] /= p, phi[i - l] *= (p - 1);
while(a[i - l] % p == 0) a[i - l] /= p;
}
j ++;
}
for(long long i = l;i <= r;i ++)
{
if(a[i - l] != 1) phi[i - l] /= a[i - l], phi[i - l] *= (a[i - l] - 1);
ans = (ans + i - phi[i - l]) % m;
}
cout << ans;
return 0;
}