《孙子·形》

【原文】孙子曰:昔之善战者,先为不可胜,以待敌之可胜。不可胜在己,可胜在敌。故
善战者,能为不可胜,不能使敌之可胜。故曰:胜可知而不可为。
【译文】孙子说:古代善于指挥作战的人,总是先创造条件使自己处于不可战胜的地位,
然后等待敌人能被我战胜的时机。做到不可战胜,关键在于自己创造充分的条件;可以战胜
敌人,关键在于敌人出现可乘之隙。因而,善于作战的人,能做到自己不可战胜,不能使敌
人一定被我战胜。所以说,胜利可以预测,但不可强求。
【原文】不可胜者,守也;可胜者,攻也。守则不足,攻则有余(竹简为:守则有余,攻
则不足)。善守者,藏于九地之下,善攻者,动于九天之上,故能自保而全胜也。
【译文】有了不可战胜的条件,就可以守;敌方出现了可胜之隙,就可以攻。守,应依靠
自己不可战胜,力有裕如;攻,要针对敌方弱点、不足,举兵必克。善于防守的人,如同深
藏于地底,使敌人无形可窥;善于进攻的人,如同神兵自九天而降,使敌措手不及。因而,
既能有效地保全自己,又能获取全面的胜利。
【原文】见胜不过众人之所知,非善之善者也;战胜而天下曰善,非善之善者也。故举秋
毫不为多力,见日月不为明目,闻雷霆不为聪耳。古之所谓善战者,胜于易胜者也。故善战
者之胜也,无智名,无勇功。故其战胜不忒,不忒者,其所措必胜,胜已败者也。故善战者,
立于不败之地,而不失敌之败也。是故胜兵先胜而后求战,败兵先战而后求胜。善用兵者,
修道而保法,故能为胜败之政。
【译文】预见胜利不超过一般人的见识,不算高明中最高明的; 经过力战而胜,天下人都
说好,也不算好中最好的。就像举起秋毫不算力大,看见太阳、月亮不算眼明,听见雷霆不
算耳聪一样。古代善战的人,总是取胜于容易战胜的敌人。因而,这些善战者的胜利,既没
有智谋的名声,也没有勇武的功劳。他所进行的战争的胜利是不会有丝毫误差的,之所以没
有误差,是因为他们所进行的战斗举动是必胜的,是战胜那已处于失败地位的敌人。善于作
战的人,总是自己先立于不败之地,而不放过任何一个打败敌人的时机。因此,胜利之师是
先具备必胜条件然后再去交战,失败之师总是先同敌人交战,然后期求从苦战中侥幸取胜。
善于用兵的人,总是注意修明政治,确保治军法度,所以能成为战争胜负的主宰。
【原文】兵法:一曰度,二曰量,三曰数,四曰称,五曰胜。地生度,度生量,量生数,
数生称,称生胜。故胜兵若以镒称铢,败兵若以铢称镒。胜者之战民也,若决积水于千仞之
溪者,形也。
【译文】用兵必须注意:一是土地幅员,二是军赋物资,三是部队兵员战斗实力,四是双
方力量对比,五是胜负优劣。度产生于土地幅员的广狭,土地幅员决定军赋物资的多少,军
赋物资的多少决定兵员的质量,兵员质量决定部队的战斗力,部队的战斗力决定胜负优劣。
所以胜利之师如同以镒对铢,是以强大的军事实力取胜于弱小的敌方,败亡之师如同以铢对
镒,是以弱小的军事实力对抗强大的敌方。高明的人指挥部队作战,就像决开千仞之高的山
涧积水一样,一泻万丈,这就是强大军事实力啊!

<think>好的,我需要回答用户关于中国剩余定理(孙子定理)的实现和解法的问题。首先,用户提到了参考的两个资料,里面包含了中国剩余定理的基本概念和历史背景,以及一些Python实现的例子。用户希望了解如何实现孙子算法,并得到相关的解法步骤。 首先,我应该先回顾中国剩余定理的基本原理。定理用于解决一元线性同余方程组的问题,例如《孙子算经》中的“物不知数”问题。用户提供的引用[1]和[2]都提到了这个例子,所以需要确保在回答中正确引用这些内容,并正确标注引用标识。 接下来,我需要解释中国剩余定理的数学步骤。这包括构造同余方程组,计算模数的乘积M,然后对每个方程计算Mi = M/mi,接着找到Mi的模mi逆元ti,最后将解表示为各项的和。这里要注意使用正确的LaTeX格式,如独立公式使用$$...$$,行内公式用$...$。例如,同余方程组的解应该是如$x \equiv a_1 \pmod{m_1}$的格式,而最终解的表达式可能需要使用独立公式块。 然后,我需要提供一个具体的例子,比如引用中的“物不知数”问题:x ≡2 mod3,x≡3 mod5,x≡2 mod7。按照步骤解决这个问题,并展示计算过程,包括计算M=3×5×7=105,每个Mi的值,求逆元ti,最后组合得到解x=23。这部分需要详细步骤,可能需要用代码块展示Python实现,如引用[1]中的代码示例,但需要确保代码正确并符合用户提到的格式要求。 之后,生成相关问题。根据用户提供的示例,应该生成三个相关问题,可能涉及中国剩余定理的应用条件、与其他算法的比较,以及处理非互质模数的方法等。这些问题需要与主题紧密相关,并且能够引导用户进一步学习。 最后,检查所有LaTeX格式是否正确,确保行内公式和独立公式的使用无误,引用标识正确添加,例如在提到《孙子算经》时添加[^2],在提到Python实现时引用[^1]。同时,保持回答结构清晰,分步骤解释,并确保语言流畅,符合中文表达习惯。</think>### 中国剩余定理(孙子算法)的实现与解法 中国剩余定理(孙子定理)用于求解一元线性同余方程组,其核心思想是将多个同余方程合并为一个全局解。以下是具体实现步骤与示例: --- #### **1. 问题描述与数学模型** 给定同余方程组: $$ \begin{cases} x \equiv a_1 \pmod{m_1} \\ x \equiv a_2 \pmod{m_2} \\ \vdots \\ x \equiv a_n \pmod{m_n} \end{cases} $$ 要求$m_1, m_2, \dots, m_n$两两互质,定理保证存在唯一解模$M = m_1 \times m_2 \times \dots \times m_n$。 --- #### **2. 算法步骤** 1. **计算总模数**:$M = m_1 \times m_2 \times \dots \times m_n$ 2. **计算部分模数**:对每个$m_i$,计算$M_i = M / m_i$ 3. **求逆元**:找到$M_i$模$m_i$的逆元$t_i$,即满足$M_i t_i \equiv 1 \pmod{m_i}$ 4. **构造解**:$x = \sum_{i=1}^n a_i \times M_i \times t_i \pmod{M}$ --- #### **3. 示例:《孙子算经》“物不知数”问题** **问题**:求整数$x$,满足: $$ \begin{cases} x \equiv 2 \pmod{3} \\ x \equiv 3 \pmod{5} \\ x \equiv 2 \pmod{7} \end{cases} $$ **解法**: 1. 总模数:$M = 3 \times 5 \times 7 = 105$ 2. 部分模数:$M_1 = 35$, $M_2 = 21$, $M_3 = 15$ 3. 求逆元: - $35 \times t_1 \equiv 1 \pmod{3} \Rightarrow t_1 = 2$(因$35 \equiv 2 \pmod{3}$,$2 \times 2 = 4 \equiv 1 \pmod{3}$) - $21 \times t_2 \equiv 1 \pmod{5} \Rightarrow t_2 = 1$(因$21 \equiv 1 \pmod{5}$) - $15 \times t_3 \equiv 1 \pmod{7} \Rightarrow t_3 = 1$(因$15 \equiv 1 \pmod{7}$) 4. 构造解: $$ x = (2 \times 35 \times 2) + (3 \times 21 \times 1) + (2 \times 15 \times 1) = 140 + 63 + 30 = 233 \equiv 23 \pmod{105} $$ 最小正整数解为$x=23$[^2]。 --- #### **4. Python实现** ```python def crt(a_list, m_list): M = 1 for m in m_list: M *= m x = 0 for a, m in zip(a_list, m_list): Mi = M // m # 求逆元(此处用暴力枚举,实际可用扩展欧几里得算法) ti = next(t for t in range(1, m) if (Mi * t) % m == 1) x += a * Mi * ti return x % M # 示例:解《孙子算经》问题 a = [2, 3, 2] m = [3, 5, 7] print(crt(a, m)) # 输出23 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值