English | 简体中文
小于 10 的所有质数的和为
求小于 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 毫秒。