Mod in math
An Introduction to Modular Math
When we divide two integers we will have an equation that looks like the following:
AB=Q remainder R\dfrac{A}{B} = Q \text{ remainder } RBA=Q remainder R
AAA
is the dividend
BBB
is the divisor
QQQ
is the quotient
RRR
is the remainder
Sometimes, we are only interested in what the remainder is when we divide
AAA
by BBB
.
For these cases there is an operator called the modulo operator (abbreviated as mod).
Using the same AAA
,
BBB
,
QQQ
,
and RRR
as above, we would have: A mod B=RA \text{ mod } B = RA mod B=R
We would say this as AAA
modulo BBB
is congruent to RRR
.
Where BBB
is referred to as the modulus.
For example:
13513 mod 5==2 remainder 33
Visualize modulus with clocks
Observe what happens when we increment numbers by one and then divide them by 3.
03132333435363=======0 remainder 00 remainder 10 remainder 21 remainder 01 remainder 11 remainder 22 remainder 0
The remainders start at 0 and increases by 1 each time, until the number reaches one less than the number we are dividing by. After that, the sequence
repeats.
By noticing this, we can visualize the modulo operator by using circles.
We write 0 at the top of a circle and continuing clockwise writing integers 1, 2, ... up to one less than the modulus.
For example, a clock with the 12 replaced by a 0 would be the circle for a modulus of 12.
To find the result of A mod BA \text{ mod } BA mod B
we can follow these steps:
- Construct this clock for size
BBB
- Start at 0 and move around the clock
AAA
steps - Wherever we land is our solution.
(If the number is positive we step clockwise, if it's negative we step
counter-clockwise.)
Examples
8 mod 4=?8 \text{ mod } 4 = ?8 mod 4=?
With a modulus of 4 we make a clock with numbers 0, 1, 2, 3.
We start at 0 and go through 8 numbers in a clockwise sequence 1, 2, 3, 0, 1, 2, 3, 0.
We ended up at 0 so 8 mod 4=0
.
7 mod 2=?7 \text{ mod } 2 = ?7 mod 2=?
With a modulus of 2 we make a clock with numbers 0, 1.
We start at 0 and go through 7 numbers in a clockwise sequence 1, 0, 1, 0, 1, 0, 1.
We ended up at 1 so 7 mod 2=1
.
−5 mod 3=?-5 \text{ mod } 3 = ?−5 mod 3=?
With a modulus of 3 we we make a clock with numbers 0, 1, 2.
We start at 0 and go through 5 numbers in counter-clockwise sequence (5 is
negative) 2, 1, 0, 2, 1.
We ended up at 1 so −5 mod 3=1
.
Conclusion
If we have A mod BA \text{ mod } BA mod B
and
we increase AAA
by a multiple of B
,
we will end up in the same spot, i.e.
A mod B=(A+K⋅B) mod BA \text{ mod } B = (A + K \cdot B) \text{ mod } BA mod B=(A+K⋅B) mod B
for
any integerK
.
For example:
3 mod 10=313 mod 10=323 mod 10=333 mod 10=3
Notes to the Reader
mod in programming languages and calculators
Many programming languages, and calculators, have a mod operator, typically represented with the % symbol. If you calculate the result of a negative number, some languages will give you a negative result.
e.g.
-5 % 3 = -2.
In a future article we will explain, why this happens, and what it means.
Congruence Modulo
You may see an expression like:
A≡B (mod C)A \equiv B\ (\text{mod } C)A≡B (mod C)
This says that AAA
is congruent to BBB
modulo CCC
.
It is similar to the expressions we used here, but not quite the same.
In the next article we will explain what it means and how it is related to the expressions above.
Mod in math的更多相关文章
- VB6与VB.NET对照表
VB6与VB.NET对照表 VB6.0 VB.NET AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1.It ...
- VB6.0 和VB.NET 函数对比
VB6.0和VB.Net的对照表 VB6.0 VB.NET AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1 ...
- Java的数组长度无需编译指定,因为它是对象
大家可以看从Thinking in Java中摘出来的代码理解一下,甚至.多维数组的子数组无须等长 //: MultiDimArray.java// Creating multidimensional ...
- VB6.0和VB.Net的函数等对照表
VB6.0和VB.Net的对照表 VB6.0 VB.NET AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1 ...
- 利用eval函数实现简单的计算器
""" description : use python eval() function implement a simple calculator functions ...
- [洛谷P4245]【模板】任意模数NTT
题目大意:给你两个多项式$f(x)$和$g(x)$以及一个模数$p(p\leqslant10^9)$,求$f*g\pmod p$ 题解:任意模数$NTT$,最大的数为$p^2\times\max\{n ...
- 子数组最小值的总和 Sum of Subarray Minimums
2018-09-27 23:33:49 问题描述: 问题求解: 方法一.DP(MLE) 动态规划的想法应该是比较容易想到的解法了,因为非常的直观,但是本题的数据规模还是比较大的,如果直接使用动态规划, ...
- 动态规划-填格子问题 Domino and Tromino Tiling
2018-09-01 22:38:19 问题描述: 问题求解: 本题如果是第一看到,应该还是非常棘手的,基本没有什么思路. 不妨先从一种简化的版本来考虑.如果仅有一种砖块,那么,填充的方式如下.
- SharePoint REST API - OData查询操作
博客地址:http://blog.csdn.net/FoxDave 本篇主要讲述SharePoint REST中OData的查询操作.SharePoint REST服务支持很多OData查询字符串 ...
随机推荐
- HDU1686——Oulipo
Problem Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, w ...
- 服务确定撤销/删除/关闭 (ml81n)
FUNCTION zrfc_mm006. *"---------------------------------------------------------------------- * ...
- 使用iframe设置frameset的高度
index.html的页面代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "htt ...
- 一点一滴完全突破KAZE特征检测算法,从各向异性扩散滤波开始(1)
ECCV2012中出现了一种比SIFT更稳定的特征检测算法KAZE.尽管,这个算法是几个法国人提出的,但是算法却有一个日文的名字.KAZE是日语‘风’的谐音,最近宣布退休的宫崎骏所拍摄的影片“起风了” ...
- poj2531
看了一下0ms,16ms,100ms左右过了的代码,思维量对我来说比較大,不是非常easy理解. 我的作法: 用并查集算权值和. 用dfs枚举两个点集的全部可能,因为是全然图,枚举一半的点就可以. # ...
- php数据库操作类
config.db.php <?php $db_config["hostname"] = "localhost"; //服务器地址 $db_config[ ...
- 5大AR应用窥探移动未来~你见过吗?
摘要:随着可穿戴设备的不断升温,尤其是Google Glass的出现,让AR技术再次走进我们的视线.以下尾随DevStore小编看看这5款优秀的AR应用,有木有闪到你的眼~ 眼下移动开发人员可选的AR ...
- 不同数据库oracle mysql SQL Server DB2 infomix sybase分页查询语句
在不同数据库中的使用的分页查询语句: 当前页:currentpage 页大小:pagesize 1. Oracle数据库 select * from (select A.*,rownum rn fro ...
- Ajax - 异步调用后台程序 -JSON
在ASP.NET使用ajax时基本上每个操作都要新建一个.ashx处理程序,页面很多,每个页面的操作也很多,这样的话项目就会产生新建很多很多的.ashx页面,能不能把方法写在后台中,然后Jquery直 ...
- Delphi中使用python脚本读取Excel数据
Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...