Problem 10
Summation of primes
The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.
Find the sum of all the primes below two million.
素数的和
所有小于10的素数的和是2 + 3 + 5 + 7 = 17。
求所有小于两百万的素数的和。
代码演示
#include<iostream>
using namespace std;
#define MAX_N 2000000
int prime[MAX_N+5];
int is_prime[MAX_N+5];
long long sum=0;
int main(){
for(int M=2;M<MAX_N;M++){
if(is_prime[M]==0) {
prime[++prime[0]]=M;
sum+=M;
}
for(int j=1;j<=prime[0];j++){
if(prime[j]*M>MAX_N)break;
is_prime[prime[j]*M]=1;
if(M%prime[j]==0) break;
}
}
cout<<sum<<endl;
return 0;
}
答案
142913828922