关于 R 代码与四舍五入素数有关的问题

Question regarding R code to do with rounding prime numbers

我需要一个函数,如果输入的数字是素数,它必须将它四舍五入到下一个素数,如果不是,则将它四舍五入到前一个素数。

我有这个代码来识别它是否是质数:

prime <- function(x) {
   if (x == 2) {
      print(3)
   } else if (any(x %% 2:(x-1) == 0)) {
      FALSE
     } else { 
      TRUE
   }
}

我想在 true 和 false 中添加一个 while 循环,如果函数为假,它必须减一直到它为真,如果它为真,它必须加一直到它再次为真但我是不知道该怎么做。

使用您的素数检查器,

prime <- function(x) {
  if (x == 2) {
    print(3)
  } else if (any(x %% 2:(x-1) == 0)) {
    FALSE
  } else { 
    TRUE
  }
}

我们构建new函数,我们首先检查我们的数字是否是质数,如果是,加1直到我们到达下一个质数。如果它不是质数,我们减 1 直到它是。

new <- function(x){
  if (isTRUE(prime(x))){
    x = x+1
    while(prime(x) == FALSE){
      x = x+1
    }
    return(x)
  } else {
    while(prime(x) == FALSE){
      x = x-1
    }
    return(x)
  }
}

我们得到

> new(7)
[1] 11
> new(10)
[1] 7