提交时间:2025-10-18 17:00:03
运行 ID: 38702
#include<bits/stdc++.h> using namespace std; long long n; bool isp[10000007]; int main(){ scanf("%lld",&n); if(n==1){ printf("0"); return 0; } long long last=0,ans=0; for(int i=2;i<=n;i++){ if(isp[i]==0){ if(last==0){ long long xu=i-1; ans+=(1+xu)*xu/2; last=i; } else if(isp[i-1]==0){ ans++; last=i; } else{ long long xu=i-last-1; if(xu%2==1){ ans+=(1+(xu+1)/2)*((xu+1)/2)/2; ans+=(1+(xu)/2)*(xu/2)/2; ans+=(xu+1)/2; } else{ ans+=(1+(xu)/2)*(xu/2); ans+=xu/2+1; } last=i; } } for(int j=i*2;j<=n;j+=i){ isp[j]=1; } } long long xu=n-last; ans+=(1+(xu))*(xu)/2; printf("%lld",ans); return 0; }