#gcd,求最大公约数函数,递归算法,有了扩展欧几里得算法之后,此函数可以不用
def _g_c_d(a,b):if 0==b:return areturn gcd(b,a%b)#扩展欧几里得算法,返回值列表中,x是a的逆元(mod b),q是gcd(a,b),若x是0,则表示没有逆元
#y是计算过程中的迭代的参数,可以不用管
#此算法实质上是广义欧几里得除法的逆运算,用递归可以体现出这个逆运算的过程
def Ex_Euclid(a,b):if 0==b:x=1;y=0;q=areturn x,y,qxyq=Ex_Euclid(b,a%b)x=xyq[0];y=xyq[1];q=xyq[2]temp=x;x=y;y=temp-a//b*yreturn x,y,q#获取a的逆元(mod b)的函数,目的是为了封装获取逆元的功能
def Get_Inverse(a,b):return Ex_Euclid(a,b)[0]#获取a和b的最大公约数函数,目的是为了封装获取最大公约数的功能
def gcd(a,b):return Ex_Euclid(a,b)[2]#判断所有的mi是否两两互质
def Is_Coprime(m_list):for i in range(len(m_list)):for j in range(i+1,len(m_list)):if 1!=gcd(m_list[i],m_list[j]):return 0  #返回0表示不是两两互质的return 1  #返回1表示是两两互质的#获取所有的Mi
def Get_Mi(m_list,M):Mi_list=[]for mi in m_list:Mi_list.append(M//mi)return Mi_list#获取所有的Mi的逆元
def Get_Mi_inverse(Mi_list,m_list):Mi_inverse=[]for i in range(len(Mi_list)):Mi_inverse.append(Get_Inverse(Mi_list[i],m_list[i]))return Mi_inverse#中国剩余定理,返回值为最终的x
def C_R_T():while True:#两个空列表,分别用来保存mi和bim_list=[]b_list=[]while True: #输入mim_i=input("请输入mi,以'.'结束输入:")if m_i=='.':breakelif False==m_i.isnumeric():print("输入有误,请输入数字:")m_i=input()continueelse:m_list.append(int(m_i))while True: #输入bib_i=input("请输入bi,以'.'结束输入:")if b_i=='.':breakelif False==b_i.isnumeric():print("输入有误,请输入数字!\n")b_i=input()continueelse:b_list.append(int(b_i))if len(m_list)!=len(b_list):print("错误!mi的个数和bi的个数不相同,请重新输入\n")elif 0==Is_Coprime(m_list):print("错误!输入的mi并不是两两互质的,请重新输入mi\n")else:breakM=1 #M是所有mi的乘积for mi in m_list:M*=miMi_list=Get_Mi(m_list,M)Mi_inverse=Get_Mi_inverse(Mi_list,m_list)x=0for i in range(len(b_list)):  #开始计算xx+=Mi_list[i]*Mi_inverse[i]*b_list[i]x%=Mreturn xif __name__=='__main__':print("同余式组的解为:x=%d" % C_R_T())

中国剩余定理 Python实现相关推荐

  1. python中国剩余定理-中国剩余定理 Python实现

    #gcd,求最大公约数函数,递归算法,有了扩展欧几里得算法之后,此函数可以不用 def _g_c_d(a,b): if 0==b: return a return gcd(b,a%b) #扩展欧几里得 ...

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

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

  3. Python实现简易中国剩余定理(信安密码实验)

    西电信安密码学基础实验二 实现中国剩余定理 使用Python实现 题目要求实现三个大整数下的同余方程求解X的值,若无法求得则输出不能直接使用中国剩余定理求解 源代码: import math def ...

  4. 基于中国剩余定理的秘密共享方案(Python实现)

    本文目录 一.实验目的(包括实验环境.实现目标等等) 1. 实验环境 2. 实现目标 二.方案设计(包括背景.原理.必要的公式.图表.算法步骤等等) 1. 背景 2. 原理 3. 公式 4. 中国剩余 ...

  5. 中国剩余定理用python实现

    中国剩余定理 任务描述 本关任务:编写一个能计算任意组数的中国剩余定理的程序. 相关知识 为了完成本关任务,你需要掌握:1.中国剩余定理的原理 解释 在<孙子算经>中有这样一个问题:&qu ...

  6. 中国剩余定理模数不互素的情况

    中国剩余定理 模数不互素的情况 当中国剩余定理在应用中模数不互素时,在求解MiM_iMi​对模数mim_imi​的逆元Mi′M_i'Mi′​时可能会报错说:两个数不是互素的,无法进行求解逆元的操作(我 ...

  7. 初等数论四大定理(威尔逊定理,欧拉定理,费马小定理,中国剩余定理)

    初等数论四大定理 1. 威尔逊定理 (1) 结论 当且仅当ppp为素数时,(p−1)!≡−1(modp)(p-1)!\equiv -1(\mod p)(p−1)!≡−1(modp). (2) 证明 充 ...

  8. 中国剩余定理(孙子定理)的证明和c++求解

    <孙子算经>里面的"物不知数"说的是这样的一个题目:一堆东西不知道具体数目,3个一数剩2个,5个一数剩3个,7个一数剩2个,问一共有多少个. 书里面给了计算过程及答案: ...

  9. 解题报告(十三)中国剩余定理(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

最新文章

  1. 2018年视频云服务市场格局进入整合阶段,阿里云视频云位居市场竞争力领导者的位置...
  2. 前沿|8种面部表情实时追踪,你的喜怒哀乐全被AI看穿了
  3. 大数据之hadoop伪集群搭建与MapReduce编程入门
  4. lumen 支持多文件上传及php 原生多文件上传
  5. 沃尔玛尝到了推行InnerSource的甜头
  6. hashmap put过程_看完还不懂HashMap算我输(附互联网大厂面试常见问题)
  7. 验证内容是否为空的多种办法 1210 c#
  8. 本地正常,部署放在IIS服务器上面偶尔会出现 列不属于表Table,因为多客户并发造成那个的问题
  9. 实名开撕!格力举报奥克斯空调虚标不合格 奥克斯回应:将起诉!
  10. HTML5中input标签有用的新属性
  11. 修改linux最大文件句柄数
  12. Mtlab 二次规划及其例子
  13. kcp参数 android,Android上KCP协议的使用
  14. Java微服务和分布式区别
  15. 浏览器刷新和关闭时显示提示信息
  16. CANoe中的Channel-based access和Network-based access
  17. 信息级联(Information cascade)
  18. 《Python渗透测试编程技术:方法与实践》:信息的利用
  19. 几何视觉的编程实践——相机参数计算——基于ipyvolume的3D可视化——透视投影
  20. LeetCode第111题解析

热门文章

  1. 统计期刊介绍——统计计算类(一)
  2. 安装suds报错,ImportError: No module named client
  3. python ai对话系统_对话系统
  4. Error when loading the SDK: 发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。
  5. 第十一届中国创业投资大会在汉成功举行
  6. js 抽象工厂模式
  7. java多线程处理百万数据
  8. NK4.1-WY33-计算糖果
  9. 2023 电脑PC 摄像头截图识别二维码源码 QrCodeScanner v1.4.1 附软件
  10. 微信小程序之组件(一)