1. 程式人生 > >尤拉計劃 第十題

尤拉計劃 第十題

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。

找出200萬以下所有素數的總和。

思路

這道題與第7題的線性篩思路一樣,只是篩出小於兩百萬的素數的同時進行求和,要記得用int64_t喲

#include <stdio.h>
#include <inttypes.h>

#define max 2000000 

int main(){
	int32_t prime[max + 5] = {0};
	int64_t sum = 0;
	for(int64_t i = 2; i < max; i++){
		if(!prime[i]) {prime[++prime[0]] = i; sum += i;}
		for(int64_t j = 1; j <= prime[0]; j++){
			if(i * prime[j] > max) break;
			prime[i * prime[j]] = 1;
			if(i % prime[j] == 0) break;
		}
	}
	printf("%"PRId64"\n", sum);
	
	return 0;
}