12行……
我改了之后你的代码跑的比我的都快
```
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e7+5;
bool vis[maxn];
int prime[maxn/15],cnt=0,n,phi[maxn];
long long sum[maxn];
void oulashai(int n)
{ phi[1]=1;
for(int i=2;i<=n;i++)
{
if(vis[i]==0) prime[++cnt]=i,phi[i]=i-1;
for(int j=1;j<=cnt&&i*prime[j]<=n;j++)
{
vis[i*prime[j]]=1;
if(i%prime[j]==0) {
phi[i*prime[j]]=phi[i]*prime[j];
break;
} else {
phi[i*prime[j]]=phi[i]*phi[prime[j]];
}
}
}
}
int main(){
long long ans=0;
cin>>n;
oulashai(n);
for(int i=1;i<=n;i++) sum[i]=sum[i-1]+phi[i];
for(int i=1;i<=cnt;i++){
ans+=2*sum[n/prime[i]]-1;
}
cout<<ans<<endl;
}
```
by __Aaaaaaaa @ 2023-01-18 23:09:49