当前位置: 首页 > 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.xdnf.cn/news/1381987.html

相关文章:

  • .Net Core Web 架构(管道机制)的底层实现
  • [光学原理与应用-321]:皮秒深紫外激光器产品不同阶段使用的工具软件、对应的输出文件
  • 【黑客技术零基础入门】2025最新黑客工具软件大全,零基础入门到精通,收藏这篇就够了!
  • JAVA全栈Redis篇————List常用命令讲解
  • 【架构师干货】软件工程
  • Linux学习-TCP并发服务器构建(epoll)
  • Cesium 入门教程(十一):Camera相机功能展示
  • Burp系列【密码暴力破解+令牌token破解】
  • 深度学习篇---VGGNet网络结构
  • DeepInteraction++基于多模态交互的自动驾驶感知与规划框架
  • 【iOS】Masnory自动布局的简单学习
  • Linux(二) | 文件基本属性与链接扩展
  • Spring Security 深度学习(二): 自定义认证机制与用户管理
  • npm install --global @dcloudio/uni-cli 时安装失败
  • 一天认识一个神经网络之--CNN卷积神经网络
  • QT之双缓冲 (QMutex/QWaitCondition)——读写分离
  • LINUX ---网络编程(三)
  • 如何通过docker进行本地部署?
  • 机器学习回顾(二)——KNN算法
  • Day16_【机器学习概述】
  • 设计模式:组合模式(Composite Pattern)
  • 【数据结构与算法】LeetCode 20.有效的括号
  • Vue 组件循环 简单应用及使用要点
  • 微服务保护和分布式事务-01.雪崩问题-原因分析
  • 步进电机、直流电机常见问题
  • APP手游使用游戏盾SDK为何能有效抵御各类攻击?
  • Java全栈工程师的实战面试:从基础到微服务的全面解析
  • 算法 --- 二分
  • Paimon——官网阅读:非主键表
  • CLIP图像特征提取:`CLIPVisionModel` vs `CLIPModel.get_image_features()`,哪种更适合你的任务?