模运算的规则

模运算与基本四则运算有些相似,可是除法例外。其规则例如以下:

(a + b) % p = (a % p + b % p) % p (1)

(a – b) % p = (a % p – b % p) % p (2)

(a * b) % p = (a % p * b % p) % p (3)

(a^b) % p = ((a % p)^b) % p (4)

结合律:

((a+b) % p + c) % p = (a + (b+c) % p) % p (5)

((a*b) % p * c)% p = (a * (b*c) % p) % p (6)

交换律:

(a + b) % p = (b+a) % p (7)

(a * b) % p = (b * a) % p (8)

分配律:

((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p (9)

重要定理

若a≡b (% p),则对于随意的c。都有(a + c) ≡ (b + c) (%p);(10)

若a≡b (% p),则对于随意的c,都有(a * c) ≡ (b * c) (%p);(11)

若a≡b (% p),c≡d (% p)。则 (a + c) ≡ (b + d) (%p)。(a – c) ≡ (b – d) (%p),

(a * c) ≡ (b * d) (%p)。(a / c) ≡ (b / d) (%p)。 (12)

时间: 2024-12-08 18:30:29

模运算的规则的相关文章

取模运算

脑子不好使,老是记不住(?_?),备忘一下. 模运算与基本四则运算有些相似,但是除法例外.其规则如下: (a + b) % p = (a % p + b % p) % p (a - b) % p = (a % p - b % p) % p (a * b) % p = (a % p * b % p) % p a ^ b % p = ((a % p)^b) % p 结合律: ((a+b) % p + c) % p = (a + (b+c) % p) % p ((a*b) % p * c)% p =

模运算法则

模运算与基本四则运算有些相似,但是除法例外.其规则如下: (a + b) % p = (a % p + b % p) % p (a - b) % p = (a % p - b % p) % p (a * b) % p = (a % p * b % p) % p (a^b) % p = ((a % p)^b) % p 推论: 若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c) (%p): 若a≡b (% p),则对于任意的c,都有(a * c) ≡ (b * c) (%p

加解密学习之--模运算与经典密码学

密码学 模运算和经典密码学 a = r mod m a = q*m + r 余数不唯一 12 = 3 mod 9 12 = 21 mod 9 12 = -6 mod 9 {...3,12,21,30...} 上面的组合就是等价类,比如模数9还存在另外8个等价类. {...0,10,19...} {...1,10,19...} ... {...8,17,26...} 余数的选择 一般 0 ≤ r ≤ m ? 1 整数环 The set Zm = {0,1,2,...,m?1} Two operat

数论 - 取模运算及其性质

在算法竞赛中经常会用到各式各样的取模运算,下面将常用的总结下来以便自己复习 什么是取模运算 在java和c/c++中 对于整型数a,b来说,取模运算: 1.求整数商: c = a/b; 2.计算模: a % b = a - c * b; 例子: 9 % 4 = 9 - (9 / 4) * 4 = 1 9 %-4 = 9 - (9 /-4) -4 = 1 -9 % 4 = -9 - (-9 / 4) 4 =-1 -9 %-4 = -9 - (-9 /-4) *-4 =-1 在python中 a %

小手记之与运算代替模运算

等式 先抛出一个等式, X & (2n?1) == X % 2n 右边式子,也就是模运算,最后的结果为[0, 2n?1],而左边的式子,也就是与运算,可以将X的高位清掉,最后剩下的是X的[0, n)位上面的数值,这个值当然也是∈[0, 2n?1],所以左右两边是相等的. 对比 模运算经常用来做哈希,利用上面的等式,我们完全可以使用与运算来代替模运算, 好处,与运算要比模运算来得快: 限制,模数必须是2的次幂: 参考资料 http://ifeve.com/dissecting-disruptor-

Numpy 基本除法运算和模运算

基本算术运算符+.-和*隐式关联着通用函数add.subtract和multiply 在数组的除法运算中涉及三个通用函数divide.true_divide和floor_division,以及两个对应的运算符/和// 1. 数组的除法运算 import numpy as np # divide函数在整数和浮点数除法中均只保留整数部分(python3中的np.divide == np.true_divide) a = np.array([2,6,5]) b = np.array([1,2,3])

mysql中的优化, 简单的说了一下垂直分表, 水平分表(有几种模运算),读写分离.

一.mysql中的优化 where语句的优化 1.尽量避免在 where 子句中对字段进行表达式操作select id from uinfo_jifen where jifen/60 > 10000;优化后:Select id from uinfo_jifen where jifen>600000; 2.应尽量避免在where子句中对字段进行函数操作,这将导致mysql放弃使用索引 select uid from imid where datediff(create_time,'2011-11

大整数取模运算出现运算结果负数的解决方案

首先我们看个例子 <?php echo 12121212121 % 1000000; //结果为 -689767 //实际应该为12121 ?> 这里的取模运算(取余数)出现了BUG.那么需要声明一下,负数也是可以取模操作的,并不是出现负数就是不对的我们应该把这种长整数类型看成float型数据进行处理介绍一个函数float fmod ( float $x , float $y )返回除法的浮点数余数通过这个函数的运算,就可以得到原本想要的余数结果 <?php $a = floatval(

模运算%的结果符号

代码: #include <stdio.h> #include <stdlib.h> void display(int, int); int main(void) { // 模运算的结果取决于第一个操作数的符号 // 如果第一个操作数是正数,得到的模也是正数 // 如果第一个操作数是负数,得到的模也是负数 // a % b = a - [a / b] * b // [x]表示对数x趋零取整 // C99中,对整数除法规定趋零截尾 int a, b; a = 9; b = 5; di