当前位置:首页 > C++目录 > 正文内容

【数论】同余定理与同余方程

亿万年的星光3年前 (2023-01-07)C++目录3812
  1. 定义

    同余定理是数论中的一个重要概念。它的定义是这样的:给定一个整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m 得到一个整数,那么就成整数a和b对模m同余,记作a≡b(mod m)。对模m同余是整数的一个等价关系。

    简言之:两个整数同时除以一个整数得到的余数相同,则二整数同余。

  2. 定理

 两个整数a、b,若它们除以整数m所得的余数相等,则称a与b对于模m同余或a同余于b模m。
 记作:a≡b (mod m),
 读作:a同余于b模m,或读作a与b对模m同余,例如         26≡2(mod 12)。

    设m是大于1的正整数,a、b是整数,如果m|(a-b),则称a与b关于模m同余,记作a≡b(mod m),读作a与b对模m同余。
   显然,有如下事实
(1)若a≡0(mod m),则m|a;
(2)a≡b(mod m)等价于a与b分别用m去除,余数相同。

    3.同余方程

        同余方程就是同余式里加了一个需要我们求解的未知数。

        比如,一种同余方程(就是我们首先要讲的一次同余方程)长成这个样子:

                ax≡b(mod p)

    4.定理扩展

  • 反身性:a≡a (mod m);

  • 对称性:若a≡b(mod m),则b≡a (mod m);

  • 传递性:若a≡b(mod m),b≡c(mod m),则a≡c(mod m);

  • 同余式相加:若a≡b(mod m),c≡d(mod m),则a c≡b d(mod m);

  • 同余式相乘:若a≡b(mod m),c≡d(mod m),则ac≡bd(mod m)。

  • 线性运算:如果a ≡ b (mod m),c ≡ d (mod m),那么

  • a ± c ≡ b ± d (mod m);

  • a * c ≡ b * d (mod m)。

  • 7.除法:若ac ≡ bc (mod m) c≠0 则 a≡ b (mod m/gcd(c,m)) 其中gcd(c,m)表示c,m的最大公约数。特殊地 ,gcd(c,m)=1 则a ≡ b (mod m)

  • 8.幂运算:如果a ≡ b (mod m),那么a^n ≡ b^n (mod m)

  • 9.若a ≡ b (mod m),n|m,则 a ≡ b (mod n)

  • 10.若a ≡ b (mod mi) (i=1,2…n) 则 a ≡ b (mod [m1,m2,…mn]) 其中[m1,m2,…mn]表示m1,m2,…mn的最小公倍数

    还有我们以前经常见到的下面的操作(同余加减法):

(a+b)%p=(a%p+b%p)%p;
(a*b)%p=a%p*b%p;
 a/b%m = (a%(b*m))/b%m;
  •     高精度取模:

12345 = ( ( (1 * 10 +2 ) * 10 +3 ) * 10 + 4 ) * 10 + 5)

 5.相关定理

  • 欧拉函数

  • 费马小定理

6.例题以及应用








扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

Code::Blocks下载安装教程

Code::Blocks下载安装教程

Code::Blocks 是一款免费、开源且跨平台的 C/C++ 集成开发环境。它支持 Windows、Linux 和 macOS 等多种操作系统,核心特点是轻量快速、纯专注于 C/C++ 开发,并内...

【题解】采药的最短路径

【题目描述】少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶。孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处。迷阵由M×N个方格组成,有的方格内有...

【高级篇】C++ 中string的用法

【高级篇】C++ 中string的用法

0.概述string是C++标准库的一个重要部分,本意是字符串,和字符数组不同的是,字符数组是通过一个一个字符模拟的字符串,而string本身就是字符串,string在处理字符串问题时,十分强大。1....

CSP-J2021年普及组复赛T3——网络连接

【题目描述】TCP/IP 协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个 协议,还原一个简化后的网络连接场景。在本问题中,计算机分为两大类:服务机(Server)和客户机(Clie...

树的存储结构

【方法1:数组】称为父亲表示法const int m=10;          ...

如何估算时间复杂度

首先:  常见的算法时间复杂度由小到大依次为:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n^2)<Ο(n^3)<…<Ο(2^n)<Ο(n!)时间复杂度可以简单理解为最多执...