转载_模运算_归纳得很精华啊
很多地方用到模运算,这里说明模运算的一些规律,并加以证明。 后续会对这些理论实际的应用加以记录和说明。
1. 模运算是取余运算(记做 % 或者 mod),具有周期性的特点。 m%n的意思是n除m后的余数, 当m递增时m%n呈现周期性特点, 并且n越大,周期越长,周期等于n。
例如
0 % 20 = 0,1 % 20 = 1, 2 % 20 = 2, 3 % 20 = 3, ..., 19 % 20 = 19
20 % 20 = 0,21 % 20 = 1,22 % 20 = 2,23 % 20 = 3, ...,39 % 20 = 19
2. 如果 m % n = r,那么可以推出如下等式
m = k * n + r (k为大于等于0的整数, r <= m)
3. 同余式, 表示正整数a,b对n取模,它们的余数相同,记做 a ≡ b mod n或者a = b (mod n)。
根据2的等式可以推出 a = kn + b 或者 a - b = kn
证明: ∵ a = k1 * n + r1
b = k2 * n + r2
∴ a - b = (k1 - k2) * n + (r1 - r2)
a = k * n + (r1 - r2) + b
∵ a, b对n取模同余,r1 = r2
∴ a = k * n + b (k = k1 - k2)
4. 模运算规则, 模运算与基本四则运算有些相似,但是除法例外。其规则如下
(a + b) % n = (a % n + b % n) % n (1)
(a - b) % n = (a % n - b % n) % n (2)
(a * b) % n = (a % n * b % n) % n (3)
ab % n = ((a % n)b) % n (4)
(1)式证明
∵ a = k1*n + r1
b = k2*n + r2
a % n = r1
b % n = r2
∴(a+b) % n = ((k1+k2)*n + (r1+r2)) % n = (r1+r2) % n = (a % n + b % n)% n
得证
(2)式证明同上
(3)式证明
a = k1*n + r1
b = k2*n + r2
(a*b) % n = (k1k2n2 + (k1r2+k2r1)n + r1r2) % n = r1r2 % n = (a %n * b %n ) % n
(4)式证明
设 a % n = r
ab %n= (a * a * a * a…*a) %n = (a %n * a %n * a %n * … * a %n) %n = rb % n = ((a % n) b) % n
模运算看起来不是很直观,但是可以用来推导出一些有用的东西。 例如(4)式可以用来降幂运算,例如计算6265 % 133,直接计算的话需要算出6265 利用(4)式可以进行降幂运算。
6265 % 133
= 62 * 6264 % 133
= 62 * (622)32 % 133
= 62 * 384432 % 133
= 62 * (3844 % 133)32 % 133
= 62 * 12032 % 133
= 62 * 3616 % 133
= 62 * 998 % 133
= 62 * 924 % 133
= 62 * 852 % 133
= 62 * 43 % 133
= 2666 % 133
= 6
转载于:https://www.cnblogs.com/cchun/archive/2012/07/22/2603594.html
转载_模运算_归纳得很精华啊相关推荐
- C语言学习趣事_之_大数运算_加法
C语言学习趣事_大数运算_之加法 1.引子 在C语言中,因为预定义的自然数类型的大小是有上下限度的,这就决定了在进行数的运算的时候,必然受到限制,同时因为C语言是最接近汇编的一种程序设计语言,并 ...
- MATLAB_4-形态学_腐蚀_膨胀_灰度图的腐蚀以及膨胀_开运算_闭运算_文章末尾有几个素材例子
素材链接: MATLAB_4-形态学_课程需要的素材 记住单词拼写: 腐蚀 erode 膨胀 dilate 开运算 open 闭运算 close 图像重建 imreconstruct reconstr ...
- C++_数据类型_算术运算符_取模运算_递增递减运算_赋值运算符_比较运算符---C++语言工作笔记014
10 对 3取余可以看到是3 余数是3
- 酒店智能门锁方案功能介绍_模组_西城微科
世界上自有门锁以来,门锁的变革经历了:机械锁-光孔锁-磁片锁-电子锁-智能感应卡锁,门锁不断地更新换代.进入九十年代后,智能卡锁以其无余伦比的优势创建了门锁新概念.计算机.电子机械和智能卡的诞生,门锁 ...
- matlab中xtem,快速傅里叶变换_蝶形运算_按频率抽取基2-fft算法_MATLAB代码
function y=MyFFT_FB(x,n) %MYFFT_TB:My Fast Fourier Transform Frequency Based %按频率抽取基2-fft算法 %input: ...
- 【转载】蒙哥马利幂模运算 - 简介
蒙哥马利幂模运算 - 简介 蒙哥马利(Montgomery)幂模运算是快速计算a^b%k的一种算法,是RSA加密算法的核心之一. 蒙哥马利幂模运算 - 特点及原理 蒙哥马利模乘的优点在于减少了取模的次 ...
- 取模是什么意思python_原来Python中的取模运算方法竟然是这样的!
今天小编就为大家分享一篇Python中的取模运算方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 所谓取模运算,就是计算两个数相除之后的余数,符号是%.如a % b就是计算a除以b ...
- java中的取模和取余_取模运算
本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 取模运算是求两个数相除的余数.[1] 取模运算("Modulus Operation")和取余运算(&qu ...
- 取模运算性质_求余、取模运算在RTOS中计算优先级的理解
uCOS3中的部分源码: /* 置位优先级表中相应的位 */ void OS_PrioInsert (OS_PRIO prio) { CPU_DATA bit; CPU_DATA bit_nbr; O ...
最新文章
- Ubuntu环境下安装Bochs
- r语言逻辑向量相加_R语言基础教程——第3章:数据结构——向量
- 第四篇 群聚类非线性表的编程实验 第11章 应用图的遍历算法编程
- int定义源码 python_python学习(第一章)
- 新分类!全总结!最新Awesome-SLU-Survey资源库开源!
- 斜挎包长度到哪里合适_电视背景墙的位置在哪里比较合适?进来你都知道了
- 如何用servle和c3p0-DBUtils实现用户登录功能
- 抓眼球包装设计样机模板,色彩秘籍都在这里了!
- metinfo mysql off_利用Sqlmap测试MetInfo企业网站管理系统MySql注入漏洞
- MyBatis学习总结(25)——Mybatis Generator generatorConfig.xml配置文件详细说明
- go sync.once用法
- .netcore2.2 windows发布IIS 服务器配置 0x8007000d
- VMWare 虚拟机网络共享给宿主机
- Linux 平台上的软件包管理
- 直接使用word模板生成word文件
- 五个温度带的分界线_中国划分为哪五个个温度带
- 使用Jwt验证登录demo
- 数据库通过出生日期计算年龄
- 「端到端」和「点到点」的联系及区别
- Java中的标识符、关键字、字面值、变量、八种基本数据类型与类型转换规则
热门文章
- 浅析Python3中的bytes和str类型(转载)
- Pytorch —— BN、LN、IN、GN
- 小波变换(wavelet transform)的通俗解释(三)
- android 数据库 数组,如何从SQLITE数据库中获取数据到android中的数组?
- phpfpm怎么连接mysql_php-fpm连不上mysql的问题?
- BCGControlBar MFC对话框换肤 续
- UML部署图和构件图
- 计算机计算能力共享,如何共享计算机的计算能力?
- 安装vue cli_vuecli4.x安装与搭建
- 使用lambdaquery() 报空指针异常_Java 14 来势汹汹,这回让空指针无处遁形!!