【问题标题】:Question regarding R code to do with rounding prime numbers关于 R 代码与舍入素数有关的问题
【发布时间】:2019-08-17 22:45:42
【问题描述】:

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

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

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

我想在真假中添加一个while循环,如果函数为假,它必须减一直到它为真,如果它是真的,它必须加一直到它再次为真,但我不确定如何做到这一点。

【问题讨论】:

    标签: r while-loop primes


    【解决方案1】:

    使用您的主要检查器,

    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
    

    【讨论】:

      猜你喜欢
      • 2020-03-09
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      • 2019-03-28
      • 1970-01-01
      相关资源
      最近更新 更多