ベクトルで計算したら早かった.5秒くらいかかるけどさっきより20倍くらいマシだからもういいや.何も考えずforを使うのを止めないといけない.
pent <- function(n) n*(3*n-1)/2 is.pentagonal <- function(p){ 2*p == ceiling(sqrt(2/3*p))*(3*ceiling(sqrt(2/3*p))-1) } j <- 2 ans <- 0 while(1){ b.p <- pent(rep(j, j-1)) s.p <- pent(1:(j-1)) pTF <- is.pentagonal(b.p - s.p) & is.pentagonal(b.p + s.p) if(sum(pTF)>=1) break j <- j+1 } (b.p - s.p)[pTF]