0

欧拉计划 #50

素数 41 可以写成六个连续素数之和:

41 = 2 + 3 + 5 + 7 + 11 + 13

这是添加到低于 100 的素数的最长的连续素数之和。

加到一个素数上的小于一千的连续素数的最长和包含 21 项,等于 953。

100 万以下的哪个素数可以写成最连续素数之和?

这是我的代码:

SieveOfE <- function(n) {
    primes <- rep(TRUE, n)
    primes[1] <- FALSE
    last.prime <- 2
    while (last.prime <= sqrt(n)) {
        primes[seq.int(2*last.prime, n, last.prime)] <- FALSE
        last.prime <- last.prime + min(which(primes[(last.prime + 1) : n]))
    }
    which(primes)
}

primes <- SieveOfE(3940)
primes <- as.numeric(primes)

ans <- 0
length <- 0

for (i in 1:length(primes)) {
    for (j in length(primes):i) {
        if ((sum(primes[i:j]) %in% primes) && (j - i > length)) {
            length <- j - i
            ans <- sum(primes[i:j])
        }
    }
}

ans

尽管我知道它在 900000+ 范围内,但我一直得到的答案是 3821。

4

0 回答 0