代码如下:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e7+5;
int n;
int phi[maxn];
vector<int> prime;
bool vis[maxn];
long long ans;
long long sum[maxn];
void oula(){
phi[1]=1;
for(int i=2; i<=n; i++){
if (!vis[i]){
prime.push_back(i);
phi[i] = i-1;
}
for (int j: prime){
if (i*j <= n){
vis[i*j] = true;
phi[i*j] = phi[i]*j;
if (i % j == 0) break;
}else{
break;
}
}
}
}
int main(){
cin >> n;
oula();
for (int i=1; i<=n; i++) sum[i] = sum[i-1] + phi[i];
// for (int i=1; i<=n; i++) cout << phi[i] << ' ';
// cout << '\n';
// for (int i: prime) cout << i << ' ';
// cout << '\n';
// for (int i=1; i<=n; i++) cout << vis[i] << ' ';
// cout << '\n';
for (int i: prime) ans += (sum[n/i]<<1)-1;
cout << ans;
return 0;
}