当前位置: 首页 > article >正文

python实现中国剩余定理

中国剩余定理又称孙子定理,是数论中一个重要定理。最早可见于我国的数学著作《孙子算经》卷下“物不知数”问题,原文如下:

有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。

把这题转化成现代数学问题:

求一个数x,该数除以3余2,除以5余3,除以7余2

把以上问题转化为一般方程的形式

根据中国剩余定理解如下

其中

python代码实现

n = int(input())
b = list(map(int, input().split()))  # 余数
m = list(map(int, input().split()))  # 模数
M = [0] * n
m_total = 1
x = 0  # 解,初始化为0
for i in range(n):
    m_total *= m[i]  # 计算m_total

for i in range(n):
    M[i] = m_total // m[i]  # 计算M[i]

for i in range(n):
    x += b[i] * M[i] * pow(M[i], -1, m[i])  # pow(M[i], -1, m[i])表示M[i]模m[i]的逆元
print(x % m_total)  # 该解有无数个,取一个模m_total的最小正整数解

第一行输入有几个方程

第二行输入每个方程的余数

第三行输入每个方程的模数

如一开始《孙子算经》的那题输入

3
2 3 2
3 5 7

结果为


http://www.kler.cn/a/230934.html

相关文章:

  • Stata学习(1)
  • 【数据分析】Excel中的常用函数公式总结
  • 矩阵的正定(positive definite)性质的作用
  • STM32 硬件随机数发生器(RNG)
  • 设计模式1-访问者模式
  • 国密SM2算法进行数据的加密、签名和验签、解密
  • 图解支付-金融级密钥管理系统:构建支付系统的安全基石
  • Springboot整合JUnit5框架
  • 【学网攻】 第(23)节 -- PPP协议
  • Redis系列——Lua脚本和redis事务的应用
  • swift结算体系
  • 获取旁站 / C 段:第三方网站(附链接)
  • 问题:0xc8前面加(byte) #人工智能#学习方法的原因是因为0xc8大于??????????? 。 #微信#其他#微信
  • 【数据结构与算法】堆 / 堆排序 / TopK问题(Heap)
  • 洛谷C++简单题小练习day9—[AHOI2017]寻找探监点
  • 单片机学习笔记---串口通信(2)
  • 什么是UI设计?
  • Mapbox Vision SDK 介绍
  • 专业排版设计软件:QuarkXPress 2024 for mac中文激活版
  • 多个Nginx虚拟主机部署脚本