提交时间:2025-10-18 19:38:30

运行 ID: 38709

#include<bits/stdc++.h> using namespace std; #define int long long int n; bool vis[10000005]; int prime[10000005],sz,ans; void init(int n){ vis[1]=1; for(int i=2;i<=n;i++){ if(!vis[i]){ prime[++sz]=i; } for(int j=1;j<=sz&&prime[j]*i<=n;j++){ vis[prime[j]*i]=1; if(i%prime[j]==0)break; } } } signed main(){ //freopen("a.in","r",stdin); cin>>n; if(n<=1){ cout<<0; return 0; } init(n); ans=1; for(int i=2;i<=sz;i++){ int tmp=prime[i]-prime[i-1]; if(tmp%2==1){ ans+=(1+tmp/2)*(tmp/2)+ceil(1.0*tmp/2); } else{ cout<<(1+tmp/2)*(tmp/2)<<endl; ans+=(1+tmp/2)*(tmp/2); } } for(int i=prime[sz]+1;i<=n;i++){ ans+=i-prime[sz]; } cout<<ans; return 0; }