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

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

亿万年的星光3年前 (2023-01-07)C++目录3967
  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.例题以及应用








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

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

    分享给朋友:

    相关文章

    【数论】二项式定理

    【数论】二项式定理

    一、基本概念上面这个式子就叫做二项式定理,又称牛顿二项式定理,该定理给出两个数之和的整数次幂诸如展开为类似项之和的恒等式。二项式定理可以推广到任意实数次幂,即广义二项式定理。 初中高中阶段比...

    图的遍历

    【题目描述】给出 N 个点,M 条边的有向图,对于每个点 v,求 A(v) 表示从点 v 出发,能到达的编号最大的点。【...

    最小生成树—Kruskal(克鲁斯卡尔)算法

    最小生成树—Kruskal(克鲁斯卡尔)算法

    一、算法描述在一个连通加权无向图中,找到一棵最小生成树。即,找到连接所有顶点的、权值总和最小的树,且树中不包含任何环。二、核心思想贪心策略:每次从未选择的边中,选取一条权值最小的边。避免环路:如果加入...

    【题解】围圈报数(约瑟夫问题)

    【题解】围圈报数(约瑟夫问题)

    【题目描述】有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个热呢又出列,... ,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,......

    【数据结构】队列—基本操作

    【数据结构】队列—基本操作

    一、C++实例分析       C++队列queue模板类的定义在<queue>头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容...

    【题解】士兵训练

    【题目描述】某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,...