题意:
求小于 2000000 的素数和
解题思路:
直接使用欧拉函数 详见 (埃拉托斯尼斯筛法)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2000005;
ll ans = 0;
ll prime[maxn];
int is_prime[maxn+1];
void getprime(ll n){
int p = 0;
for(int i = 0; i <= n; i++){
is_prime[i] = 1;
}
is_prime[0] = is_prime[1] = 0;
for(int i = 2; i <= n; i++){
if(is_prime[i]){
prime[p++] = i;
ans += i;
for(ll j = 2*i; j <= n; j += i){
is_prime[j] = 0;
}
}
}
}
int main() {
ll k = 2000000;
getprime(k);
cout << ans <<endl;
return 0;
}