Skip to content

Latest commit

 

History

History
32 lines (21 loc) · 771 Bytes

File metadata and controls

32 lines (21 loc) · 771 Bytes

语言

English | 简体中文

小于 10 的所有质数的和为 $2 + 3 + 5 + 7 = 17$

求小于 2,000,000 的所有质数的和。

解答

答案:142913828922

long sum = 0;
boolean[] primes = MathUtil.generatePrimes(2_000_000);
for (int i = 0; i < primes.length; i++) {
	if (primes[i]) {
		sum += i + 1;
	}
}
return sum;

研讨

你可以很方便地通过对递增的自然数依次判断是否质数来求和,但这种方式性能很差。

质数筛可以提升生成质数的效率。

前者的性能大约在 30 分钟,而后者能达到 50 毫秒。