「物不知数」问题
有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?
即求满足以下条件的整数:除以 \(3\) 余 \(2\) ,除以 \(5\) 余 \(3\) ,除以 \(7\) 余 \(2\) 。
该问题最早见于《孙子算经》中,并有该问题的具体解法。宋朝数学家秦九韶于 1247 年《数书九章》卷一、二《大衍类》对「物不知数」问题做出了完整系统的解答。上面具体问题的解答口诀由明朝数学家程大位在《算法统宗》中给出:
三人同行七十希,五树梅花廿一支,七子团圆正半月,除百零五便得知。
\(2\times 70+3\times 21+2\times 15=233=2\times 105+23\) ,故答案为 \(23\) 。
算法简介及过程
中国剩余定理 (Chinese Remainder Theorem, CRT) 可求解如下形式的一元线性同余方程组(其中 \(n_1, n_2, \cdots, n_k\) 两两互质):
\[\left \{ \begin{array}{ccc} x &\equiv& a_1 \pmod {n_1} \\ x &\equiv& a_2 \pmod {n_2} \\ &\vdots& \\ x &\equiv& a_k \pmod {n_k} \\ \end{array} \right. \]
上面的「物不知数」问题就是一元线性同余方程组的一个实例。
算法流程
- 计算所有模数的积 \(n\) ;
- 对于第 \(i\) 个方程:
- 计算