在R代码中只得到从3到100的素数有什么错误吗?

xtfmy6hx  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(113)

我想得到从3到100的素数,只使用'if','for','break','next'。当我运行代码时,什么也没有显示。代码中是否有错误?

for (i in 3:100) {
  prime <- TRUE
  for (k in (2:i-1)) {
    if (i%%k == 0) {
      prime = FALSE
      break
    }
  }
  if (prime==TRUE) {
    print(i)
  }
}

我想得到质数(如3,7,9,11,13,17,19,......)只使用'if','for','break','next'。

blmhpbnm

blmhpbnm1#

@罗兰在评论中已经指出了错误所在,即for (k in (2:(i-1)))
此外,您可以使用辅助函数findPrimes定义自定义函数f,例如,

f <- function(lb, ub) {
    findPrimes <- function(n) {
        if (n == 2) {
            return(n)
        }
        p <- Recall(n - 1)
        c(p, if (all(n %% p>0)) n)
    }
    v <- findPrimes(ub)
    v[v >= lb]
}

> f(3, 100)
 [1]  3  5  7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

相关问题