三角形数

三角形数 \(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} \]

相关推荐
憧憬成为java架构高手的小白2 小时前
docker学习笔记(基于b站多个视频学习)【未完结】
笔记·学习
念何架构之路2 小时前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星2 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
失去的青春---夕阳下的奔跑2 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode
黎阳之光3 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
RainCity3 小时前
Java Swing 自定义组件库分享(七)
java·笔记·后端
丷丩3 小时前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up
m0_629494733 小时前
LeetCode 热题 100-----25.回文链表
数据结构·算法·leetcode·链表
東隅已逝,桑榆非晚3 小时前
字符函数和字符串函数
c语言·笔记