You need to enable JavaScript to run this app. R语言求下一个质数函数修改:需包含起始数本身
优惠活动
大模型
产品
解决方案
定价
更多

R语言求下一个质数函数修改:需包含起始数本身

R语言质数查询函数调整方案

原代码问题点

  • 初始临时变量直接赋值为x+1,完全跳过了对输入值x本身的质数校验,是导致np(7)返回11而非预期7的核心原因
  • 质数校验的除数范围固定为2:x,当temp大于x时校验范围不足,且除数包含x本身时会误把质数判定为合数

修改后代码

np <- function(x){
  # 边界处理:输入为1时直接返回最小质数2
  if (x == 1L) {return(2L)}
  
  # 封装质数判断逻辑
  is_prime <- function(n) {
    if (n == 2L) return(TRUE)
    if (n %% 2 == 0) return(FALSE)
    for (i in 3:floor(sqrt(n))) {
      if (n %% i == 0) return(FALSE)
    }
    return(TRUE)
  }
  
  temp <- x
  # 从输入值本身开始校验,找到第一个质数就返回
  while(!is_prime(temp)) {
    temp <- temp + 1
  }
  return(temp)
}

测试验证

  • 运行np(7) 返回结果为7,符合预期
  • 运行np(8) 返回结果为11,紧邻下一个质数的逻辑正常
  • 运行np(2) 返回结果为2,边界处理正常

内容的提问来源于stack exchange,提问作者Chennai Cheetah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 22:54:07