模算数(modular arithmetic)是一个整数的算术系统,其中数字超过一定值后(称为模)后会“卷回”到较小的数值,模算数最早是出现在卡尔·弗里德里希·高斯在1801年出版的《算术研究》一书中。
模算数常见的应用是在十二小时制,将一天分为二个以十二小时计算的单位。假设现在七点,八小时后会是三点。用一般的算术加法,会得到7 + 8 = 15,但在十二小时制中,超过十二小时会归零,不存在“十五点”。类似的情形,若时钟目前是十二时,二十一小时后会是九点,而不是三十三点。小时数超过十二后会再回到一,为模12的模算数系统。依照上述的定义,12和12本身同余,也和0同余,因此12:00的时间也可以称为是0:00,因为模12时,12和0同余。
模算数可以在导入整数的同余关系后,以数学的方式处理,同余关系和整数的加法、减法及乘法相容。针对正整数,二个整数和对于模同余
若二数的差值 − 为的整数倍数(若整除 − )。数字称为同余关系的模。
例如
因为38 − 14 = 24,是12的倍数。
上述的概念也对负数有效:
而 ≡ mod 也可以用计算带余除法的余数时,和除以的余数相同来表示。例如
因为38和14除以12时,余数都为2。这是因为38 − 14 = 24是12的整数倍,符合之前同余关系的定义。
因为常常会考虑不同模数的同余关系,因此表示同余关系时会用 ≡ mod 的表示法。除去三元的表示法不论,同余关系其实是二元关系,用 ≡ 就可以看出此一特性。
同余关系可以和加法、减法及乘法一起使用时。若
及
则
若模算数延伸到包括所有实数,上式也成立,也就是说1, 2, 1, 2, 不一定都是整数,不过以下的关系在不都是整数时可能会不成立:
模算数在数论、群论、环论、纽结理论、抽象代数、电脑代数(英语:computer algebra)、密码学、计算机科学及化学中都有使用,也出现在视觉艺术及音乐。
模算数是数论的基础之一,也提供了群论、环论及抽象代数中一些重要的范例。
模算数也常作为识别码的校验码。例如国际银行账户号码(IBAN)就用模97的余数来避免输入编号时的错误。
在密码学中,模算数是 RSA及迪菲-赫尔曼等公开密钥加密系统的基础,也提到了和 椭圆曲线有关的有限域,用在许多的系统化钥算法(英语:symmetric key algorithm)中,包括高级加密标准(AES)、国际资料加密算法(IDEA)、及RC4。RSA和迪菲-赫尔曼密钥交换用到了模幂(英语:modular exponentiation)。
在电脑代数中,模算数常用来限制中间计算的整数系数大小,也限制计算中用到的资料。模算数用在多项式分解(英语:polynomial factorization)中(其中所有已知有效率的算法都用到了模算数),而针对整数及有理数的多项式最大公因式(英语:polynomial greatest common divisor)、线性代数及Gröbner基(英语:Gröbner basis),最有效率解法都用到了模算数。
计算机科学中,模算数会以位操作的方式表示,也和其他定长度、循环式的数据结构有关。许多编程语言及计算器中都有模除,而XOR是二个位元在模2下的和。
化学中,表示化合物编号的CAS号,最后一码是校验码,是将CAS号前二位数乘以1、下一位乘以2,再下一位乘以3……,最后对10取余数而得。
音乐上,模12的模算数用在十二平均律的系统中,其中有纯八度及异名同音的情形(,例如升音符的C音和降音符的D音会视为是同一个音)。
去九法是徒手计算时快速的检查工具,是以模9的模算数为基础,而且其中最重要的性质是 10 ≡ 1 (mod 9)。
模7的模算数在许多计算特定日期是星期几的算法中出现,特别是蔡勒公式及判决日法则(英语:doomsday algorithm)中。
模算数也用在像法律(像分配数(英语:Apportionment (politics)))、经济学(像博弈论),若一些社会科学的分析会强调资源的比例分割(英语:Proportional (fair division))及分配,也会用到模算数。