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
相关产品推荐
相关产品推荐

