模算术 modular arithmetic

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 为质数时, 这个环是个有限域。

时间: 2024-11-05 18:58:17

模算术 modular arithmetic的相关文章

同余 模算术 中国剩余定理

相关知识点: 1.a≡b(modc),a,b关于模c同余  ,即a modc=b mod c , 等价于a%c=b 2.如果a,b互质(a,b)=1,则可得a关于模b的逆 ax≡1(modb) 3.关于余数的定理: 定理1 :如果被除数加上(或减去)除数的整数倍,除数不变,则余数不变. 定理2 :如果被除数扩大(或缩小)几倍,除数不变,则余数也扩大(或缩小)同样的倍数. 定理3: 如果整数a除以自然数b(b≠0),余数r仍不小于b,则r除以b的余数等于a除以b所得余数.(余数和被除数关于除数同余

Modular arithmetic and Montgomery form 实现快速模乘

题目: 电音之王 题解: 求数列前n项相乘并取模 思路: ①.这题的乘法是爆long long的,可以通过快速幂的思想去解决(按数位对其中的一个数进行剖分).当然你的乘法会多出一个log的复杂度... ②.O(1)快速乘:一种O(1)复杂度求解整数相乘取模的思路(它对于64位的整型也是适用的): 来自2009年国家集训队论文:骆可强:<论程序底层优化的一些方法与技巧> (参考中附原文链接) typedef long long ll; #define MOL 123456789012345LL

数论初步——同余与模算术

具体内容见紫书p314-p316 一.a mod b a mod b:a除以b的余数,C语言表达式是a % b,且b!=0 二.模线性方程组 题目:输入正整数a,b,n,解方程ax ≡ b(mod n) .a,b,n<=109. 新记号:同余 "≡" a ≡ b(mod n):a和b关于模n同余,即a%n = b%n a ≡ b(mod n)的充要条件:a-b是n的整数倍 特殊情况,当b=1时,ax ≡ 1(mod n) 的解称为a关于模n的逆,它类似于实数运算中"倒数

同余与模算术

一.大整数取模 求n mod m 的值,(n ≤10100,m ≤109) 思路:首先,将大整数根据秦九韶公式写成"自左向右"的形式:4351 = ((4 * 10 + 3) * 10 + 5) * 10 + 1,然后利用模的性质,逐步取模. 1 const int maxn = 100 + 10; 2 char n[maxn]; 3 int m; 4 5 int biginteger_mod(char* n, int m) 6 { 7 int len = strlen(n); 8 i

BigInteger简析

简介 big-endian和little-endian big-endian.little-endian跟多字节类型的数据有关,比如int,short,long型,而对单字节数据byte却没有影响.big-endian就是低位字节排放在内存的高地址(右边),高位字节排放在内存的低地址(左边).而little-endian正好相反.比如 int a = 0x05060708,在big-endian的情况下存放为:地址     0 1 2 3数据     05 06 07 08在LITTLE-END

数学知识小结#1

PREFACE 时隔数月尝试拾起以往的OI知识发现异常的艰难,于是准备慢慢的填坑,可能比较简略并且穿插不少英文(万一面试的时候问起OI还能说几句pao),但是我英语太菜了,如果您发现了错误或是需要改进的地方,欢迎联系我或是在下方评论 小结#1主要是数论部分,小结#2到时看情况在更吧 update:里面的除法都是指下取整 质数与约数Prime Number&Divisors 质数筛法Sieve 埃拉托斯特尼筛法Sieve of Eratosthenes 主要思想是任意整数x的倍数2x,3x...都

补码原理——负数为什么要用补码表示

https://blog.csdn.net/leonliu06/article/details/78685197 文首   我们都知道负数在计算机中是以补码(忘了补码定义的戳这里)表示的,那为什么呢?本文尝试了解补码的原理,而要想理解它,首先得理解算术中“模”的概念.所以首先看一下什么是模,然后通过一个小例子来理解补码. 1 模(Modulo) 1.1 什么是模数 In mathematics, modular arithmetic is a system of arithmetic for i

文本压缩算法的对比和选择

在数据压缩领域里,文本压缩的历史最久,从Morse到Huffman和算术编码(Arithmetic coding),再到基于字典和上下文的压缩算法.各种算法不断改进,从通用算法,到现在更具针对性的算法,结合应用场景的垂直化的趋势越来越明显.所以在选择或者评价压缩算法,一定要结合实际应用场景加以考虑,包括字符集.内容的大小.压缩及解压的性能.以及各端支持情况. 数据压缩算法 一套完整的压缩算法,实际以下几个部分:  其中除编码外的三项目的都是找到一个适于编码的表示方法,而编码则是以简化的方法进行输

Java基本的程序结构设计 大数操作

大数操作 BigInteger 不可变的任意精度的整数.所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型).BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法.另外,BigInteger 还提供以下运算:模算术.GCD 计算.质数测试.素数生成.位操作以及一些其他操作. 个人理解:可以理解为BigInteger内部维护了一个int数组,这个数组可以无限大.java在对BigInteger进