| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38688 | 李羽乔 | 【J】T2 | C++ | 通过 | 100 | 78 MS | 12504 KB | 1077 | 2025-10-18 16:13:14 |
#include<bits/stdc++.h> using namespace std; const int N = 1e7+10,M = 1e6+10; int n,prime[N],c; bool isprime[N]; long long ans; int main(){ cin>>n; ans=1ll; for(int i=2;i<=n;i++){ if(!isprime[i]){ prime[++c]=i; if(c>=2){ int mid=(prime[c]+prime[c-1])/2; ans=ans+((long long)mid-(long long)prime[c-1]+1ll)*((long long)mid-(long long)prime[c-1])/2ll; ans=ans+((long long)prime[c]-(long long)mid+1ll)*((long long)prime[c]-(long long)mid)/2ll; //ans=ans+(long long)prime[c]-(long long)prime[c-1]; //cout<<i<<" "<<ans<<endl; } } for(int j=1;j<=c;j++){ if(prime[j]*i>n){ break; } isprime[prime[j]*i]=1; if(i%prime[j]==0){ break; } } } if(prime[c]<n){ ans=ans+((long long)n-(long long)prime[c]+1ll)*((long long)n-(long long)prime[c])/2ll; } cout<<ans<<endl; return 0; }