https://en.wikipedia.org/wiki/Modular_arithmetic#Integers_modulo_n

模算术: 整数达到特定值时会‘ 折返 ’ 回来—— 模数 modulus(moduli)

例如: 时钟 modulo 12. 且根据定义, 12 不仅和12一致,还和0一致。

模 n 就是除数为 n 的意思。

1. 定义同余关系

  如果  a-b=kn   那么说 a,b 是模n同余。n为正整数,k为整数。

  a≡b (mod n)

  n为同余的模数。

  同余关系写为: a=kn+b

  a=pn+r

  b=qn+r

  r 为共同余数。0<=r<n

  如 -8 ≡ 7 (mod 5)    2 ≡ -3 (mod 5)  -3 ≡ -8 (mod 5)   商可以为负数,余数一定要为 正

  性质1: primitive root modulo n  原根模n: 如果对于与 n互质的每一个整数 a, 都存在整数 k 使得 gk≡a (mod n) , 则 g 为原根。

    n 拥有 g 当且仅当 n=2, 4, pk,2pk


2. 同余类 classes

  ' 同余模n' 是一个等价关系,整数 a 的等价类为一个集合:  $ \overline{\mathit{a}}_{n}=\left \{ \cdots , a-2n,a-n,a,a+n,a+2n,\cdots  \right \}$

  这个集合就是 a,n 的等价类,或残余类。


3. 残余系统

  整数集合 $ \left \{ 0,1,2, \cdots , n-1  \right \} $   被称为 模n的最小残余系统

  对于 n 个整数的集合,如果其中没有2个同余模 n ,那么被称为 模n的完全残余系统

  例子:

    取定 n=4, 那么 ‘ 同余类 ’ 可以为:

    (1)  a=1, set={ -3 ,1, 5,9,13,…}  ,余数为 1

    (2) a=2, set={-2, 2, 6, 10, 14, }, 余数为 2

    (3) a=3, set={ -1, 3 , 7, 11, 15}, 余数为 3

    (4) a=4, set={0, 4 , 8, 12, 16}, 余数为 0

    从上面4个式子中各取一个元素出来,就组合成了 ‘’ 完全残余系统‘ ; ‘其中,’ 最小残余系统‘’  为{1,2,3,4}


4. 约化残余系统 RRS

  欧拉函数 φ: 输入为整数 n, 输出为小于n 且与n互质的正整数个数。

  RRS 中的元素为 φ(n) 个,它们与 n 互质,且彼此不同余!如 n=4 时, {5,15} 为 RRS


5. 整数模 n  integers modulo n

  所有 ‘ 同余类’ 的集合称为 ‘ 整数模n的环’; 也就是说, Z/nZ 里的元素还是集合,如3中的(1) (2) (3) (4) , 共有n个

  我们可以在这个上定义加法,减法和乘法:

  

  这些 集合 与 集合 的运算显然是成立的。

  例如,环 Z/24Z 中     因为33除以24,余数为9

  

  当且仅当 n 为质数时, 这个环是个有限域。

模算术 modular arithmetic的更多相关文章

  1. Modular Arithmetic ( Arithmetic and Algebra) CGAL 4.13 -User Manual

    1 Introduction Modular arithmetic is a fundamental tool in modern algebra systems. In conjunction wi ...

  2. HDU2114 Calculate S(n) (取模算术)

    Calculate S(n) Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  3. 阶乘相关<同余与模算术>

    题意: 题目很简明: 令S[n]=1*1!+2*2!+3*3!+4*4!+....+n*n! 求S[n]%10000007 多组测试数据 每组一个n n的范围:1<=n<=1000000 ...

  4. UVA-10929-You can say 11(秦九昭算法+同余与模算术)

    原题链接 1000位大数取余: 秦九昭算法+同余与模算术: 1314 = (((1)*10+3)*10+1)*10+4 ( a + b ) % n = ( ( a % n ) + ( b % n ) ...

  5. Modular arithmetic and Montgomery form 实现快速模乘

    题目: 电音之王 题解: 求数列前n项相乘并取模 思路: ①.这题的乘法是爆long long的,可以通过快速幂的思想去解决(按数位对其中的一个数进行剖分).当然你的乘法会多出一个log的复杂度... ...

  6. 算术编码Arithmetic Coding-高质量代码实现详解

    关于算术编码的具体讲解我不多细说,本文按照下述三个部分构成. 两个例子分别说明怎么用算数编码进行编码以及解码(来源:ARITHMETIC CODING FOR DATA COIUPRESSION): ...

  7. PythonStudy——算术运算符 Arithmetic operator

    # 减法 # 加法 print(10 + 20) print('abc' + 'def') print([1, 2, 3] + [4, 5, 6]) Output: 30  abcdef  [1, 2 ...

  8. tourist's modular arithmetic class

    #include <bits/stdc++.h> using namespace std; template <typename T> T inverse(T a, T m) ...

  9. UVa-11582:Colossal Fibonacci Numbers!(模算术)

    这是个开心的题目,因为既可以自己翻译,代码又好写ヾ(๑╹◡╹)ノ" The i’th Fibonacci number f(i) is recursively defined in the f ...

  10. 普林斯顿数学指南(第一卷) (Timothy Gowers 著)

    第I部分 引论 I.1 数学是做什么的 I.2 数学的语言和语法 I.3 一些基本的数学定义 I.4 数学研究的一般目的 第II部分 现代数学的起源 II.1 从数到数系 II.2 几何学 II.3 ...

随机推荐

  1. 【A GUIDE TO CRC ERROR DETECTION ALGORITHM】 (译文1)

    A GUIDE TO CRC ERROR DETECTION ALGORITHM (译文) <A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHM& ...

  2. 在DLL中封装模板类的问题

    在Dll中封装类是用定义一个宏来区分导出标识的 #ifdef DLLCLASS_EXPORTS #define DLL_CLASS _declspec(dllexport) //Dll #else # ...

  3. SpringBoot静态文件映射问题

    如果遇到这种情况,检查静态文件(js/css/img)是不是在默认的static路径下,在查看application配置中的 static-path-pattern: 是否和前端映射路径完全相同,要是 ...

  4. Go 闭包捕获问题

    在 Go 语言中,闭包(closure)是一个函数值,它引用了其外部作用域中的变量.简而言之,闭包能够"捕获"并"记住"其外部作用域中的变量,即使这个变量的生命 ...

  5. YAML 使用

    YAML 语言教程 | 阮一峰的网络日志 YAML Reference YAML Tutorial | Tutorials Point YAML (/ˈjæməl/) YAML Ain't Marku ...

  6. Docker 构建多平台镜像

    构建多平台镜像的方法分为两种:一种是在不同平台的机器上分别构建并推送对应平台的镜像,然后通过 Docker Manifest 将两个镜像标签合并为一个.另一种是通过 Docker buildx 在一台 ...

  7. Navicat16 安装破解教程

    Navicat16 安装破解教程 Navicat 16.1 什么是Navicat? 官网下载Navicat 注册包的使用 Navicat 16.1 在文章最后添加工作号 回复关键词获取注册机 什么是N ...

  8. Angular 18+ 高级教程 – Getting Started

    前言 这篇主要是教大家如何快速搭建一个 Angular 项目,纯用于学习. Before Starting 开始前,我们需要知道几个小知识. 1. Angular Compilation 游览器支持的 ...

  9. OData – How It Work

    前言 OData 是很冷门的东西, 用的人少, 开发的人少, 文档自然也少的可怜. 如果真的想用它, 多少要对它机制有点了解. 这样遇到 bug, 想扩展的时候才不至于完全没有路. 主要参考: ODa ...

  10. C++ STL(标准模版库)—— vector 与 迭代器

    STL 基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称. STL 从广义上讲分为三类:algorithm(算法).containe ...