You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言实现:给定正整数S查找最接近的五边形数pₙ

解题思路

五边形数的计算公式为 $p_n = \frac{3n^2 -n}{2}$,我们可以通过反解一元二次方程得到理论上使 $p_n=S$ 的正整数n的近似值:

$3n^2 -n - 2S = 0$

取正根可得 $n = \frac{1 + \sqrt{1 + 24S}}{6}$
由于n必须是正整数,我们只需要对比该近似值向下取整floor(n)和向上取整ceiling(n)对应的两个五边形数,返回距离S更近的即可,若两者距离相等任选其一返回。

实现代码
# 计算第n个五边形数
P_n <- function(n) {
  if (n == 0) {
    return(0)
  }
  return((3 * n^2 - n) / 2)
}

# 输入S为≥1的整数,输出最接近S的五边形数
nearest_pentagonal <- function(S) {
  # 输入合法性校验
  if (S < 1 || S != as.integer(S)) {
    stop("输入参数必须为≥1的整数")
  }
  # 计算理论n值
  n_approx <- (1 + sqrt(1 + 24 * S)) / 6
  # 生成两个候选n
  n1 <- floor(n_approx)
  n2 <- ceiling(n_approx)
  # 计算候选五边形数
  p1 <- P_n(n1)
  p2 <- P_n(n2)
  # 对比距离返回结果
  if (abs(p1 - S) <= abs(p2 - S)) {
    return(p1)
  }
  return(p2)
}
测试示例
  • 输入nearest_pentagonal(17),返回12(与22距离相等,任选其一即可)
  • 输入nearest_pentagonal(20),返回22
  • 输入nearest_pentagonal(5),返回5
  • 输入nearest_pentagonal(1),返回1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:24:02