三角形数

三角形数 \(T_{n} = \sum_{i = 1}^{n} i = \frac{n (n + 1)}{2}\) 。

从图上看:

text 复制代码
   T₁ = 1        T₂ = 3           T₃ = 6           T₄ = 10
      ●             ●                ●                ●
                   ● ●              ● ●              ● ●
                                   ● ● ●            ● ● ●
                                                   ● ● ● ●

就像一个三角形一样。

数学性质:

  1. 递推关系: \(T_{n} = T_{n - 1} + n\)

  2. 奇偶性: \(T_{n}\) 与 \(\frac{n (n + 1)}{2}\) 的奇偶性一致,即 \(T_{n}\) 为奇数 当且仅当 \(n \equiv 1 \pmod{4}\) 或 \(n \equiv 2 \pmod{4}\)。

    \(T_{n} = \frac{n (n + 1)}{2}\) 所以 \(T_{n}\) 与 \(\frac{n (n + 1)}{2}\) 的奇偶性一致。

    要判断 \(\frac{n (n +1 )}{2}\) 是否为奇数,就需要知道 \(n(n + 1)\) 是否包含因子 \(2\)。

    观察 \(n\) 和 \(n + 1\) 是连续的,其中恰好有一个偶数。设这个偶数为 \(2k\),则乘积为 \(2k \times \text{奇数}\),在除去分母的 \(2\) 后,剩下了 \(k \times \text{奇数}\),所以最终的奇偶性是由 \(k\) 控制的,\(k\) 为奇数,结果就是奇数,反之亦然。

    对 \(n(n + 1)\) 按 \(n\) 模 \(4\) 分类:

    • \(n = 4m\): 偶数部分为 \(n = 4m = 2 \times 2m\),则 \(k = 2m\) 为偶数 \(\to T_{n}\) 为偶数。
    • \(n = 4m + 1\): 偶数部分为 \(n + 1 = 4m + 2 = 2(2m + 1)\),则 \(k = 2m + 1\) 为奇数 \(\to T_{n}\) 为奇数。
    • \(n = 4m + 2\): 偶数部分为 \(n = 4m + 2 = 2(2m + 1)\),则 \(k = 2m + 1\) 为奇数 \(\to T_{n}\) 为奇数。
    • \(n = 4m + 3\): 偶数部分为 \(n + 1 = 4m + 4 = 2(2m + 2)\),则 \(k = 2m + 2\) 为偶数 \(\to T_{n}\) 为偶数。

    所以 \(T_{n}\) 为奇数 当且仅当 \(n \equiv 1 \pmod{4}\) 或 \(n \equiv 2 \pmod{4}\)。

  3. 平方关系: 相邻两个三角形数的和为平方数,即 \(T_{n - 1} + T_{n} = n^{2}\)。

    我们将前面的图中的每个三角形进行左对齐:

    text 复制代码
       T₁ = 1        T₂ = 3           T₃ = 6           T₄ = 10
       ●             ●                ●                ●
                     ● ●              ● ●              ● ●
                                      ● ● ●            ● ● ●
                                                       ● ● ● ●

    发现任选一个除第一个外的其他三角形,将前面一个三角形翻转后可以完美的补全当前三角形的缺口,形成一个正方形。

前n个三角形数的和:

\S_{n} = \\frac{n (n + 1) (n + 2)}{6} = \\binom{n + 2}{3} \\

证明:

设 \(S_{n} = T_{1} + T_{2} + \cdots + T_{n}\)

\\\begin{split} S_{n} \&= T_{1} + T_{2} + \\cdots + T_{n} \\\\ \& = \\sum_{k = 1}\^{n} \\frac{k(k + 1)}{2} \\\\ \& = \\frac{1}{2} \\sum_{k = 1}\^{n} \\left(k\^{2} + k \\right)\\\\ \& = \\frac{1}{2} \\left(\\sum_{k = 1}\^{n} k\^{2} + \\sum_{k = 1}\^{n} k \\right) \\end{split} \\

因为 \(k^{2} = 2 \binom{k}{2} + \binom{k}{1}\)

:

\\\begin{split} 2 \\binom{k}{2} + \\binom{k}{1} \&= 2 \\times \\frac{k (k - 1)}{2} + k \\\\ \&= k\^{2} - k + k \\\\ \&= k\^{2} \\end{split} \\

所以

\\\begin{split} \\sum_{k = 1}\^{n} k\^{2} \&= \\sum_{k = 1}\^{n}\\left( 2\\binom{k}{2} + \\binom{k}{1} \\right) \\\\ \&= 2\\sum_{k = 1}\^{n} \\binom{k}{2} + \\sum_{k = 1}\^{n} \\binom{k}{1} \\end{split} \\

其中 \(\sum_{k = 1}^{n} \binom{k}{2}\) 可以通过 曲棍球棒恒等式 \(\sum_{k = m}^{n} \binom{k}{m} = \binom{n + 1}{m + 1}\) 快速得到。

\\\begin{split} \\sum_{k = 1}\^{n} \\binom{k}{2} \&= \\binom{1}{2} + \\sum_{k = 2}\^{n} \\binom{k}{2} \\\\ \&= 0 + \\binom{n + 1}{2 + 1} \\\\ \&= \\binom{n + 1}{3} \\\\ \&= \\frac{(n + 1) \\cdot n \\cdot (n - 1)}{3 \\cdot 2 \\cdot 1} \\\\ \&= \\frac{(n + 1) \\cdot n \\cdot (n - 1)}{6} \\end{split} \\

而 \(\binom{k}{1} = k\), 故

\\\sum_{k = 1}\^{n} \\binom{k}{1} = \\sum_{k = 1}\^{n} k = \\frac{n(n + 1)}{2} \\

所以

\\\begin{split} S_{n} \&= \\frac{1}{2} \\left(\\sum_{k = 1}\^{n} k\^{2} + \\sum_{k = 1}\^{n} k \\right) \\\\ \&= \\frac{1}{2} \\left( 2\\sum_{k = 1}\^{n} \\binom{k}{2} + \\sum_{k = 1}\^{n} \\binom{k}{1} + \\sum_{k = 1}\^{n} k \\right) \\\\ \&= \\frac{1}{2} \\left( 2\\sum_{k = 1}\^{n} \\binom{k}{2} + 2\\sum_{k = 1}\^{n} k \\right) \\\\ \&= \\frac{(n + 1) \\cdot n \\cdot (n - 1)}{6} + \\frac{n(n + 1)}{2} \\\\ \&= \\frac{(n + 1) \\cdot n \\cdot (n - 1) + 3 \\cdot n \\cdot (n + 1)}{6} \\\\ \&= \\frac{(n + 1) \\cdot n \\cdot (n - 1 + 3)}{6} \\\\ \&= \\frac{n \\cdot (n + 1) \\cdot (n + 2)}{6} \\end{split} \\

相关推荐
金融小师妹15 分钟前
AI因子共振模型显示:金银比突破区间上沿,白银定价逻辑进入再校准阶段
人工智能·算法·均值算法·线性回归
J2虾虾24 分钟前
C语言 typedef 用法
c语言·数据结构·算法
hunterkkk(c++)32 分钟前
线段树例题
算法
xuhaoyu_cpp_java34 分钟前
项目学习(三)代码生成器
java·经验分享·笔记·学习
故渊at43 分钟前
第二板块:Android 四大组件标准化学理 | 第七篇:Activity 页面载体与任务栈算法
android·算法·生命周期·activity·任务栈
my_daling1 小时前
松下伺服驱动器参数保存流程(已在松下A5上验证)
笔记
兰令水1 小时前
leecodecode【区间DP+树形DP】【2026.6.10打卡-java版本】
java·算法·leetcode
weixin199701080161 小时前
[特殊字符] 1688开放平台API Sign签名算法详解(Java / Python / PHP 实现)
java·python·算法
未若君雅裁1 小时前
JVM 垃圾回收算法与分代回收机制
java·jvm·算法