Problem 120と同種の問題.n番目の素数をp_nとし,(p_n - 1)^n + (p_n + 1)^nをp_n^2で割った余りが10^10より大きくなる最初のnを求める.
27ms.素数の探索範囲は適当.
## Prime number list limit <- 1e6 sieve <- logical(limit) sievelimit <- sqrt(limit) sieve[1] <- TRUE # prime => FALSE sieve[seq(4, limit, by=2)] <- TRUE for(i in seq(3, sievelimit, by=2)) if(!sieve[i]) sieve[seq(i*2, limit, by=i)] <- TRUE prime.list <- (1:limit)[!sieve] ## get minimum n min.n <- function(maxr){ for(n in seq(1, length(prime.list), by=2)){ if(2*prime.list[n]*n > maxr) return(n) } return("not found") } min.n(1e10)