中国剩余定理中间涉及一个重要观念:互质

首先来看《孙子算经》卷下第二十六问:今有物,不知其数。三、三数之,剩二;五、五数之,剩三;七、七数之,剩二。问物几何?

转换为数学语言即是(理解其中的文言,三、三数之,不表示 /32/3^2,而是三个三个地,应当是 /3/3):

x≡2(mod3)x≡3(mod5)x≡2(mod7)⇓x?

x \equiv 2 \quad(\mathrm{mod}\;3)\\ x \equiv 3 \quad(\mathrm{mod}\;5)\\ x \equiv 2 \quad(\mathrm{mod}\;7)\\ \Downarrow\\ x?
《孙子算经》给出的答案是23。当然这个问题还有其他解,由于 105=3×5×7105=3\times 5\times 7,所以 23+105n23+105n 也能满足要求。除此之外,还有别的解吗?没有了。

事实上(中国剩余定理的内容),不管物体总数除以3的余数,除以5的余数以及除以7(3、5、7互质)的余数分别为多少?在0到104(3×5×7−13\times 5\times 7-1)当中总存在唯一解,在此解(特解)的基础上再加上105的整数倍之后,可以得到其他所有的正整数解。这正是中国剩余定理:给出 mm 个两两互质(3,5,7,m=33,5,7, m=3)的整数,它们的乘积为 PP(P=3×5×7=105P=3\times 5\times 7=105),假设有一个未知数 MM(M=23M=23),如果我们已知 MM分别除以这 MM个数所得的余数,那么在0到 P−1P-1 的范围内,我们可以唯一地确定这个MM。这可以看做是 MM的一个特解,其他所有满足要求的 MM,则正好是那些除以 PP 之后余数等于这个特解的数(x≡M(modP)⇒x=nP+Mx\equiv M\quad (\mathrm{mod}\;P)⇒ x=nP+M)

我们回到《孙子算经》,来求解“今有物,不知其数”。根据中国剩余定理,由于除数3,5,7两两互质,因而解在0-104之间,且解唯一。我们求解的基本思路就是,依次找出满足每个条件,但是又不会破坏掉其他条件的数。

  • 我们首先要寻找一个数,它既是5的倍数又是7的倍数,但同时除以3正好余2,也即 35⋅xmod3=235\cdot x\mod 3=2,根据 扩展欧几里得算法及其应用 一文的算法,我们可轻易对之求解,解得 x=1x=1,也即该数为 35⋅x=3535\cdot x=35,

  • 再来看第二个条件,寻找这么一个数,它既是3的倍数,又是7的倍数,同时除以5余3,也即 21⋅xmod5=321\cdot x\mod 5=3,此时解得,x=3x=3,也即 21⋅x=6321\cdot x=63

  • 同理对于第三个条件,15⋅xmod7=215\cdot x\mod 7=2,解得 x=2x=2,15⋅x=3015\cdot x=30

现在如果我们把 35,63,3035, 63, 30 这三个数加在一起(得128)会怎样?它将同时满足题目中的三个条件。为了得一个0-104之间的解,我们在128的基础上减去 3×5×7=1053\times 5\times 7=105,正好得到《孙子算经》当中的答案,23.

这是我们给出求解的 python 代码(因为涉及 a⋅xmodn=ba\cdot x \mod n=b 的求解,同样地我们也需给出扩展欧几里得算法的实现):

from operator import mul
from functools import reducedef ext_euclid(a, b):# ax + by = gcd(a, b)if b == 0:return (a, 1, 0)d, x, y = ext_euclid(b, a%b)return (d, y, x-a//b*y)def mod_linear_equation(a, b, c):d, x, y = ext_euclid(a, b)if c%d:raise 'no solution'return x*(c//d)%bdef chinese_remainer(l1, l2):# l1, l2 均为数组# 分别表示除数,和余数s = 0P = reduce(mul, l1)for i in range(len(l1)):t = P//l1[i]s += mod_linear_equation(t, l1[i], l2[i])*treturn s%Pif __name__ == '__main__':print(chinese_remainer([3, 5, 7], [2, 3, 3]))# 23

从孙子算经到中国剩余定理相关推荐

  1. 孙子算经余数C语言,行测数量关系备考:探索《孙子算经》之剩余定理

    深圳公务员考试网:行测数量关系备考:探索<孙子算经>之剩余定理.市考期间,深圳中公教育将准备各类备考活动,如笔试峰会.模考大赛.免费公开课等,请大家留意关注,踊跃参与,更多2020深圳公务 ...

  2. 孙子算经余数C语言,2020国考行测备考:探索《孙子算经》之剩余定理

    国家公务员考试网同步陕西华图考试动态信息2020国考行测备考:探索<孙子算经>之剩余定理,更多关于国考,行测,备考,数量关系的信息内容,请关注国家公务员考试网,以及陕西华图教育(snhua ...

  3. python中国剩余定理公式_《孙子算经》之物不知数题:中国剩余定理

    1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数.  如果 m ...

  4. 孙子定理 中国剩余定理

    孙子定理 摘自:百度百科 目录 定义 解释 解法 数学公式 中国剩余定理 案例 展开 编辑本段 定义 中国古代求解一次同余式组(见同余)的方法.是数论中一个重要定理.又称中国剩余定理. 内容 编辑本段 ...

  5. 中国剩余定理matlab程序,中国剩余定理即孙子定理的五种解法

    中国剩余定理即孙子定理的五种解法 -- 学习初等数论心得笔记 2013-10-04 博文2015-12修改 "中国剩余定理"是公元5-6世纪.我国南北朝时期的一部著名算术著作< ...

  6. 信奥中的数学:孙子定理 中国剩余定理

    孙子定理 中国剩余定理 孙子定理 中国剩余定理_Dreamer Thinker Doer-CSDN博客 中国剩余问题(简介+详解) 中国剩余问题(简介+详解)_dreamzuora的博客-CSDN博客 ...

  7. 数论 —— 线性同余方程组与中国剩余定理

    [线性同余方程组] 由若干个线性同余方程构成的线性方程组. 例如: 其解法最早由我国<孙子算经>给出,因此解法称为"孙子定理",又叫"中国剩余定理" ...

  8. poj 1006 java_POJ 1006 Java:中国剩余定理

    题目描述: 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例如,智力周期的高峰,人会思维敏 ...

  9. 密码学基础算法(二)中国剩余定理

    随便谷歌了一个图片做首图 原图地址: http://www.siwapu.com/etagid41968b0/ 密码学基础系列: (一) 基于整数的欧几里得算法和扩展欧几里得算法 (二) 中国剩余定理 ...

最新文章

  1. 第一篇 著名函数之单值函数
  2. 2.3 最佳创新先锋:e代驾副总裁兼CTO于杨
  3. C4C HTML mashup debug
  4. HYDRAstor:可扩展的二级存储
  5. 【ArcGIS风暴】ArcGIS平台上点云(.las)数据生成等高线方法案例精解
  6. 从汇编去分析线程安全
  7. 【PAT - 甲级1045】Favorite Color Stripe(30分)(dp,LIS类问题)
  8. 单链表的实现【数据结构】
  9. MySQL(26)--- 索引
  10. 阿里影业“云智开放平台”炼成记!
  11. 管理新语:员工随口回答,并不是有意忽悠,而是都这样
  12. ST 电机库 电机位置环7天冲刺开发
  13. C/C++运行库简介
  14. xjoi 3561查找某数出现位置
  15. 【C++ Primer 第五版】序言+前言
  16. java 导出word换行_[原创]java导出word的5种方式
  17. 技巧_MFC_标题栏背景
  18. 【C++进阶知识】C++类的继承和派生
  19. Java模拟消息队列
  20. 他山之石 | 美团知识图谱与商品理解

热门文章

  1. linux登录界面说明,Linux登录界面以及简单使用入门
  2. git 更换密码后,pull代码 fatal: Authentication failed for '
  3. LeetCode33. 搜索旋转排序数组(二分查找)
  4. LeetCode 230. 二叉搜索树中第K小的元素(递归)
  5. OpenCV:框选某一特定区域并保存到图片
  6. MySQL 之 四种隔离级别
  7. 矩阵的秩与行列式的几何意义
  8. open cv+C++错误及经验总结(十)
  9. 红米note3支持html,红米note3如何检测硬件信息?指令代码说明
  10. HDU 5934:Bomb(强连通缩点)