其实就是个筛法求素数了
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <cmath>
#include <map>
#include <ctime>
#define MAXN 111111
#define INF 100000007
using namespace std;
bool tag[5000001];
int p[4000001];
int cnt;
void get_prime()
{
cnt = 0;
tag[1] = 1;
for (int i = 2; i < 2000000; i++)
{
if (!tag[i])
p[cnt++] = i;
for (int j = 0; j < cnt && p[j] * i < 2000000; j++)
{
tag[i*p[j]] = 1;
if (i % p[j] == 0)
break;
}
}
}
int main()
{
get_prime();
long long sum = 0;
for(int i = 0; i < cnt; i++) sum += p[i];
cout << sum << endl;
return 0;
}