当前位置:首页 > C++知识 > 正文内容

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

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








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

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

分享给朋友:

相关文章

哈希表与哈希函数

1. 哈希表(Hash Table)1.1 基本概念哈希表是一种通过哈希函数将键(key)映射到表中特定位置来访问记录的数据结构。它提供了平均时间复杂度为O(1)的查找、插入和删除操作。1.2 核心组...

【入门篇】C++ 中变量的简单使用

【入门篇】C++ 中变量的简单使用

1.什么是变量”变量“通俗来讲就是能变的量。在程序设计中,变量是一个个不同类型的盒子,当盒子里装了苹果时,盒子就代表苹果,当然,我们需要给一个个盒子起不同的名字。像下面的图片一样,一个盒子,给他取一个...

编写第一个C++程序

编写第一个C++程序

前面的文章介绍了Dev-C++的下载安装:【入门篇】>>> DEVC++下载、安装、简单使用 - 青少年编程知识记录 (codecoming.com)今天讲一下如何使用Dev-C++...

【数据结构】栈—括号匹配检验

【数据结构】栈—括号匹配检验

【题目描述】假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[  (  [  ] [  ] ) ] 等为正确的匹配,[&nbs...

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

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

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

C++链表结构——单链表

0.前言存储方式分为顺序存储结构和链式存储结构。顺序存储结构的优缺点:优点:可以通过一个简单的公式随机存取表中的任一元素,逻辑关系上相邻的两个元素在物理位置上也是相邻的,且很容易找到前驱跟后继元素。缺...