40分6个点RE!!

P2568 GCD

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


|