模算术 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 为质数时, 这个环是个有限域。
模算术 modular arithmetic的更多相关文章
- 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 ...
- HDU2114 Calculate S(n) (取模算术)
Calculate S(n) Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- 阶乘相关<同余与模算术>
题意: 题目很简明: 令S[n]=1*1!+2*2!+3*3!+4*4!+....+n*n! 求S[n]%10000007 多组测试数据 每组一个n n的范围:1<=n<=1000000 ...
- UVA-10929-You can say 11(秦九昭算法+同余与模算术)
原题链接 1000位大数取余: 秦九昭算法+同余与模算术: 1314 = (((1)*10+3)*10+1)*10+4 ( a + b ) % n = ( ( a % n ) + ( b % n ) ...
- Modular arithmetic and Montgomery form 实现快速模乘
题目: 电音之王 题解: 求数列前n项相乘并取模 思路: ①.这题的乘法是爆long long的,可以通过快速幂的思想去解决(按数位对其中的一个数进行剖分).当然你的乘法会多出一个log的复杂度... ...
- 算术编码Arithmetic Coding-高质量代码实现详解
关于算术编码的具体讲解我不多细说,本文按照下述三个部分构成. 两个例子分别说明怎么用算数编码进行编码以及解码(来源:ARITHMETIC CODING FOR DATA COIUPRESSION): ...
- PythonStudy——算术运算符 Arithmetic operator
# 减法 # 加法 print(10 + 20) print('abc' + 'def') print([1, 2, 3] + [4, 5, 6]) Output: 30 abcdef [1, 2 ...
- tourist's modular arithmetic class
#include <bits/stdc++.h> using namespace std; template <typename T> T inverse(T a, T m) ...
- UVa-11582:Colossal Fibonacci Numbers!(模算术)
这是个开心的题目,因为既可以自己翻译,代码又好写ヾ(๑╹◡╹)ノ" The i’th Fibonacci number f(i) is recursively defined in the f ...
- 普林斯顿数学指南(第一卷) (Timothy Gowers 著)
第I部分 引论 I.1 数学是做什么的 I.2 数学的语言和语法 I.3 一些基本的数学定义 I.4 数学研究的一般目的 第II部分 现代数学的起源 II.1 从数到数系 II.2 几何学 II.3 ...
随机推荐
- 国内IT行业67家外包公司,有多少程序员在里面待过?
之前写过一篇关于外包公司的文章, <什么是软件外包公司?要不要去外包公司?> 很多粉丝看了后,感觉都在说自己, 存在即合理, 外包大幅度降(可)低(以)了(压)用(榨)人(更)成(多)本( ...
- js正则匹配以$开头和结尾的内容,并改变颜色
let res = "$你好你好$" res = res.replace(/\$(?<=\$).*?(?=\$)\$/g, `<span onclick="( ...
- 如何选择 Linux 发行版
简介 要建立云服务器,首先需要安装操作系统.在现代环境中,几乎所有情况下都是指 Linux 操作系统.从历史上看,Windows 服务器和其他类型的 Unix 在特定的商业环境中都很流行,但现在几乎每 ...
- 使用go+gin编写日志中间,实现自动化收集http访问信息,错误信息等,自动化生成日志文件
1.首先在logger包下 点击查看代码 package logger import ( "fmt" "io" "net/http" &qu ...
- uni-app之camera组件-人脸拍摄
小程序录制视频:10-30秒:需要拍摄人脸,大声朗读数字(123456)这种. 1.camera组件 camera页面内嵌的区域相机组件.注意这不是点击后全屏打开的相机 camera只支持小程序使用: ...
- ElasticSearch-hard插件及IK分词器安装
ElasticSearch-hard插件及IK分词器安装 编辑 通过上一篇学习,我们学会了ElasticSearch的安装及访问到了如下页面: 编辑 ElasticSearch-head插件安 ...
- Dell存储备份告警:
创建时间 修改日期 对象名称 消息 类型 告警状态 已确认 告警定义 类型 23-3-12 11:59:26 23-3-12 11:59:37 copyMirrorswap 2 CMs Operati ...
- Encoder-Decoder、Seq2Seq、Attention
Encoder-Decoder.Seq2Seq.Attention 传送门1:Encoder-Decoder 和 Seq2Seq 因为注意力不集中,所以这篇随笔就是看别人的文章,随手参考写写的. 1. ...
- BOOST 定时器 stop探究
Asio是一个建立在Boost所提供的相关组件之上的异步的网络库,可以运行在Win/Linux/Unix等各种平台之上. 不过随着C++11的发布,其对Boost的依赖也越来越少,作者又做了一个不依赖 ...
- 下载 Youtube 上的视频的方法
事件起因: 某项目组同事需要下载 Youtube 上的视频作为参考视频 解决办法: https://www.converto.io/ -= 实测有效 =- 我个人一直在用该网站可以下载,非常好用,下 ...