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

中国剩余定理(以及扩展..)

1.标准中国剩余定理(模数两两互质)

1.1定理

所有模数 m1​,m2​,⋯,mk​​两两互质,即:gcd(m_{i},m_{j}​)=1(i\neq j

即对一个同余方程组

                       

在模 M=m1​ m2​ ⋯ mk​下有​唯一解​

求解公式:

2.脚本
def crt_standard(a, m):"""标准CRT(模数两两互质)"""M = reduce(lambda x, y: x * y, m)result = 0for i in range(len(m)):Mi = M // m[i]inv = pow(Mi, -1, m[i])  # 求逆元result = (result + a[i] * Mi * inv) % Mreturn result

2.扩展中国剩余定理(模数不一定互质)

2.1定理

转(扩展中国剩余定理(ExCRT)-CSDN博客)

2.2脚本
"""扩展欧几里得"""def exgcd(a, b):if 0 == b:return 1, 0, ax, y, q = exgcd(b, a % b)x, y = y, (x - a // b * y)return x, y, q"""扩展中国剩余定理"""def CRT(n, a, m):if n == 1:return a[0], m[0]for i in range(1, n):x, y, d = exgcd(m[0], m[i])if (a[i] - a[0]) % d != 0:return -1, -1t = m[i] // dx = (a[i] - a[0]) // d * x % ta[0] = x * m[0] + a[0]m[0] = m[0] * m[i] // da[0] = (a[0] % m[0] + m[0]) % m[0]return a[0], m[0]# 假设的题目数据(具体根据题目来改变)
n = 8# 同余方程个数
m = [284461942441737992421992210219060544764, 218436209063777179204189567410606431578, 288673438109933649911276214358963643204, 239232622368515797881077917549177081575, 206264514127207567149705234795160750411, 338915547568169045185589241329271490503, 246545359356590592172327146579550739141, 219686182542160835171493232381209438048]# 模数
a = [273520784183505348818648859874365852523, 128223029008039086716133583343107528289, 5111091025406771271167772696866083419, 33462335595116820423587878784664448439, 145377705960376589843356778052388633917, 128158421725856807614557926615949143594, 230664008267846531848877293149791626711, 94549019966480959688919233343793910003]# 余数# 计算所有模数的乘积 p
p = reduce(lambda x, y: x * y, m)# 使用CRT求解基础解和模数
x0, mod = CRT(n, a, m)

http://www.dtcms.com/a/355673.html

相关文章:

  • 用 Docker 玩转 Kafka 4.0镜像选型、快速起步、配置持久化与常见坑
  • 影楼精修-锁骨增强算法
  • 深入理解 PHP 中的 `pcntl_fork()`:父进程与子进程的执行路径
  • SRE网易一面面经
  • Linux笔记12——shell编程基础-6
  • 少样本图异常检测系列【A Survey of Few-Shot Graph Anomaly Detection】
  • Python实战:银行ATM系统开发全解析
  • RuoYi-VuePlus:前端指定接口不显示错误提示
  • 面试tips--JVM(2)--对象创建的过程
  • ERNIE-4.5-VL:技术解密+应用实战,解锁多模态新场景!
  • 8.29 贪心|摩尔投票
  • 【不说废话】pytorch中.to(device)函数详解
  • 基于K8s部署服务:dev、uat、prod环境的核心差异解析
  • 工业级TF卡NAND+北京君正+Rk瑞芯微的应用
  • openEuler Embedded 的 Yocto入门 : 5.基本变量与基本任务详解
  • Linux 系统 poll 与 epoll 机制1:实现原理与应用实践
  • DINOv2 vs DINOv3 vs CLIP:自监督视觉模型的演进与可视化对比
  • 传统set+new写法与Builder写法的区别
  • LightRAG
  • 客户案例 | 柳钢集团×甄知科技,燕千云ITSM打造智能服务新生态
  • 第1.9节:神经网络与深度学习基础
  • 基于matplotlib库的python可视化:以北京市各区降雨量为例
  • “今年业务是去年5倍以上”,工业智能体掀热潮
  • 拉普拉斯变换求解线性常系数微分方程
  • 数字接龙(dfs)(蓝桥杯)
  • npm install 安装离线包的方法
  • 【论文阅读】健全个体无辅助运动期间可穿戴传感器双侧下肢神经机械信号的基准数据集
  • 如何打造品牌信任护城河?
  • Spark入门:从零到能跑的实战教程
  • 腾讯云重保流程详解:从预案到复盘的全周期安全防护