问题描述
输入一个自然数n,求小于等于n的素数之和
样例输入
2
样例输出
2
数据规模和约定
测试样例保证 2 <= n <= 2,000,000
#include<bits/stdc++.h>
using namespace std;
int v[20000001]={0};
int main(){
long long n;
cin>>n;
long long cns=0;
//埃氏筛法
for(long long i=2;i<=n;i++){
if(v[i]==0){
for(long long j=i*i;j<=n;j+=i){
v[j]=1;
}
}
}
for(long long i=2;i<=n;i++){
if(v[i]==0){
cns+=i;
}
}
cout<<cns;
return 0;
}