【问题标题】:find a prime number after random x in r在 r 中随机 x 之后找到一个素数
【发布时间】:2018-12-18 12:21:06
【问题描述】:

我编写了这段代码,现在我想找到大于 x 的最小素数?例如,给定 4,我需要 5;给定 7,我需要 11。

my_number = function(n) {
    rangeOfNumbers = 2:(n-1)
    if(any(n%%rangeOfNumbers == 0)){
      return(FALSE)
    }
    else return(TRUE)
  }

【问题讨论】:

    标签: r


    【解决方案1】:

    这将是一个使用while 循环的选项,基于this function to find if a number is a prime number

    first_prime <- function(n){
    
      is.prime <- function(n) {
        if (n == 2) {
          TRUE
        } else if (any(n %% 2:(n-1) == 0)) {
          FALSE
        } else { 
          TRUE
        }
      }
    n <- n+1
    
    while(is.prime(n) == FALSE) {
      n <- n+1
    }
    print(n)
    }
    
    > first_prime(10)
    [1] 11
    > first_prime(11)
    [1] 13
    > first_prime(12)
    [1] 13
    > first_prime(14)
    [1] 17
    > first_prime(20)
    [1] 23
    

    【讨论】:

    • 由于这可能会影响性能,您可以将“n %% 2:(n-1)”替换为“n %% 2:int(sqrt(n))”跨度>
    • @Vince 可以工作(尽管尝试它在我的会话中引发了错误)。此外,它需要rlang::int,并且不能单独使用base
    • 不好意思,我不太懂R,可能int转换应该做别的吧。
    • 您可以使用ceiling(sqrt(n)) 向上取整到下一个最大整数
    • 除了 @Vince 之外,如果起始 n 是奇数,您可以将 n 增加 2,以便在处理大数字时加快速度
    猜你喜欢
    • 1970-01-01
    • 2021-12-15
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多