如何证明组合数是整数

文章讨论了如何通过直观和严谨的数学方法证明组合数的数论定义式总是表示整数。作者首先给出了感性证明,通过质因数分解解释组合数的整数性,然后提供了基于归纳法的严谨证明过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

去洛谷看我的博客

前言

其实这是某大佬的 PPT 里的一个问题,觉得很有意思,就花了一些时间想了想。

问题

总所周知,组合数的数论定义式是 ( n − m + 1 ) × ( n − m + 2 ) × ⋯ × n 1 × 2 × 3 × ⋯ × m \frac {(n-m+1)\times (n-m+2)\times \cdots \times n} {1\times 2\times 3\times \cdots \times m} 1×2×3××m(nm+1)×(nm+2)××n

那么,仅通过这个定义式,如何证明组合数一定是整数呢?

证明

感性的证明

一个组合数,可以看成是连续的 m m m 个正整数的积除以 m ! m! m!

那么,我们可以先找到所有 m ! m! m! 的质数,从小到大分别是 p 1 , p 2 , p 3 ⋯ p x p_1,p_2,p_3 \cdots p_x p1,p2,p3px

那么,我们可以考虑枚举质数。

对于质数 p i p_i pi,包含了因子 p i p_i pi 的数,在 [ 1 , m ] [1,m] [1,m] 中应当有 ⌊ m p i ⌋ \lfloor \frac m {p_i} \rfloor pim 个,在 [ n − m + 1 , n ] [n-m+1,n] [nm+1,n] 中也应当有 ⌊ m p i ⌋ \lfloor \frac m {p_i} \rfloor pim 个。

那么,把这些数全部除以 p i p_i pi

再考虑包含了因子 p i 2 {p_i}^2 pi2 的数,在两个区间都应该有 ⌊ m p i 2 ⌋ \lfloor \frac m {{p_i}^2} \rfloor pi2m 个,同样全部除掉。

再考虑 p i 3 {p_i}^3 pi3 一直到 p i k {p_i}^k pik,这样的话,我们就可以发现可以完全地把质因子 p i p_i pi 的影响消去。

所以当我们把所有的质因子全部消去时,分母就是 1 1 1,分子还剩下一些 > p x >p_x >px 的质因子,所以一定是整数。

严谨的证明

上面的证明,我自己感觉比较正确,但是感觉不够数学,所以又想了一种大概是归纳法的证明方法。

我们考虑证明 m = i m=i m=i 的情况,假设 m < i m<i m<i 的情况都已经证明一定正确。

再构造两个数列 a a a b b b,最开始,都是 { 1 , 2 , 3 ⋯ i } \{1,2,3\cdots i\} {1,2,3i}

把序列 a a a 的积看作分子,序列 b b b 的积看作分母,那么这个比值就对应某个组合数,通过把 a a a 整体加上一个数,来表示所有的 m = i m=i m=i 的组合数。

首先,原始的序列 a a a,对应 n = i n=i n=i 的情况,并且一定是整数。

现在考虑 n = i + 1 n=i+1 n=i+1 的情况,也就是把序列 a a a 整体加上 1 1 1 的情况。

我们可以把中间 i − 1 i-1 i1 个相同的数都消去,这样序列 a a a 仅留下 i + 1 i+1 i+1,序列 b b b 仅留下 1 1 1,这个显然是整数对吧,不过,我们眼光还要放长远一些,这个不就是 m = 1 m=1 m=1 的组合数吗?因为 m < i m<i m<i 的组合数我们都看作已经证明是整数了,所以这种情况是对的。

再把序列 a a a 1 1 1,那么这一次序列 a a a 留下的是 { i + 1 , i + 2 } \{i+1,i+2\} {i+1,i+2},序列 b b b 留下的是 { 1 , 2 } \{1,2\} {1,2},这又对应 m = 2 m=2 m=2 的组合数,也是证明过的。

再不断地把 a a a 1 1 1,可以分别对应 m = k , k ∈ [ 1 , i − 1 ] m=k,k\in [1,i-1] m=k,k[1,i1] 的所有组合数情况。

但是,当 a a a 加了 i i i 次时,就没有可以对应的了,这该怎么证明呢?

可以先看看 i − 1 i-1 i1 次的时候,序列 a a a { i , i + 1 , ⋯   , 2 × i − 1 } \{i,i+1,\cdots,2\times i -1\} {i,i+1,,2×i1},序列 b b b { 1 , 2 , 3 ⋯   , i } \{1,2,3\cdots,i\} {1,2,3,i}

因为对应了 m = i − 1 m=i-1 m=i1 的组合数,所以一定是整数,这个时候,再把序列 a a a 都加上 1 1 1,可以等价地看作去掉 i i i,加上 2 × i 2\times i 2×i,所以序列 a a a 的积扩大了两倍,也一定是整数。

那么,再往后面继续加 1 1 1,证明方式也同理,所以我们证明得到了 m = i m=i m=i 的组合数都一定是整数,再继续证明 m = i + 1 m=i+1 m=i+1,后续都一定可以证明,所以推广到 m m m 是任意数,组合数都一定是整数,证明完毕。

内容概要:本文档详细介绍了基于MATLAB实现的无人机三维路径规划项目,核心算法采用蒙特卡罗树搜索(MCTS)。项目旨在解决无人机在复杂三维环境中自主路径规划的问题,通过MCTS的随机模拟与渐进式搜索机制,实现高效、智能化的路径规划。项目不仅考虑静态环境建模,还集成了障碍物检测与避障机制,确保无人机飞行的安全性和效率。文档涵盖了从环境准备、数据处理、算法设计与实现、模型训练与预测、性能评估到GUI界面设计的完整流程,并提供了详细的代码示例。此外,项目采用模块化设计,支持多无人机协同路径规划、动态环境实时路径重规划等未来改进方向。 适合人群:具备一定编程基础,特别是熟悉MATLAB和无人机技术的研发人员;从事无人机路径规划、智能导航系统开发的工程师;对MCTS算法感兴趣的算法研究人员。 使用场景及目标:①理解MCTS算法在三维路径规划中的应用;②掌握基于MATLAB的无人机路径规划项目开发全流程;③学习如何通过MCTS算法优化无人机在复杂环境中的飞行路径,提高飞行安全性和效率;④为后续多无人机协同规划、动态环境实时调整等高级应用打下基础。 其他说明:项目不仅提供了详细的理论解释和技术实现,还特别关注了实际应用中的挑战和解决方案。例如,通过多阶段优化与迭代增强机制提升路径质量,结合环境建模与障碍物感知保障路径安全,利用GPU加速推理提升计算效率等。此外,项目还强调了代码模块化与调试便利性,便于后续功能扩展和性能优化。项目未来改进方向包括引入深度强化学习辅助路径规划、扩展至多无人机协同路径规划、增强动态环境实时路径重规划能力等,展示了广阔的应用前景和发展潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值