分数的乘法逆元和负数的取模运算
1.乘法逆元
A.定义
如果ax≡1 (mod p),且gcd(a,p)=1(a与p互质),则称a关于模p的乘法逆元为x。
既然有ax≡1 (mod p),那么有ax - py = 1,x是a关于模p的乘法逆元。
B.分数的乘法逆元
对于实数域,一个数的乘法逆元就是其倒数,所谓乘法逆元就是相乘等于单位元的那个数。
对于ecc算法的离散曲线域,m的乘法逆元为n,满足m * n = 1 (mod p),即满足m*n mod p = 1 mod p,称作n就是m关于的p乘法逆元。在离散曲线域中,单位元就是1。如果在离散曲线域碰到一个表达式2/5,单纯的碰到一个表达式2/5没有任何意义,要看mod数是多少,如果是10,那么a=2/5的真正值是求5关于10的乘法逆元,然后再乘以2 md 10。
2.负数的取模运算
在整数范围内,自然数的求余法则并不被很多人所接收,大家大多认可的是下面的这个定义2。
如果a与d是整数,d非零,那么余数r满足这样的关系:a = qd + r,q为整数,且0 <= |r| <|d|
根据定义. 7 = (-3)*(-2) + 1或7 = (-3)*(-3)-2,所以余数为1或-2,在ecc算法的离散曲线域中,我们只考虑非负整数所以这里余数会取1。
3.推演
例如:求5关于模72的乘法逆元。
5X - 72Y = 1
解:72 = 14 *5+2
5 = 2*2 + 1
2 = 2*1 + 0
所以有1 = 5 - 2*2
= 5 - 2* (72-14*5)
= 5 - 2*72 + 28*5
= 29*5 - 2*72
最后有乘法逆元为29。
例如:求-1/2在离散曲线域(E23(1,1))中的值。
解:首先求2关于模23的乘法逆元为
2X-23Y = 1
23 = 11*2 + 1
2 = 2*1 +0
所以有1 = 23- 2*11 = 23 * (2-1) - 2*11 = 12*2 - 23,得乘法逆元为12
然后求 (-1 )*12 mod 23 ,因为有 (-12)*(-1) + 11 = 23,所以得值为11。
5.备注
以上为研究ecc算法推导的基础知识难点,有这些概念才能更好的理解ecc算法。
分数的乘法逆元和负数的取模运算相关推荐
- python负数取模_负数的取模运算
我们知道,在不同的语言中,对负数执行取模运算,结果有可能会是不同的.例如,(-11)%5在python中计算的结果是4,而在C(C99)中计算的结果则是-1. truncate除法 && ...
- java求负数取模_负数参与取模运算
学习Python看到数值运算这部分,看到取模运算,原来不仅正数负数都可以取模,浮点数,甚至复数都可以取模: 对于x%y, 如果都是整数,则返回x/y的余数: 如果是浮点数,返回的是x - int(x/ ...
- 取模运算(包括负数)
取模运算只能运用于整数运算,得到余数. 负数的取模运算: 如果第一个操作数为负数,则得到的模也是负数:如果第一个操作数是正数,则得到的模也是正数.与第二个操作数的正负没有关系,只跟第一个操作数有关.实 ...
- python的取负运算_python 负数取模运算实例
举例: 340%60 = 40 ,怎么来的? 340 - 60*5 = 40 340 - (比340小的那个可以被60整除的正整数) =. 40 如果是负数: -340%60 = -340 - (比- ...
- php 求余 负数,PHP的求余(取模)运算
这篇文章主要介绍了关于PHP的求余(取模)运算 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 先来看下个小案例:$n = 8.45; $result = $n*100; echo g ...
- 取模运算总结 - 数论
引入 编程竞赛有相当一部分题目的结果过于庞大,整数类型无法存储,往往只要求输出取模的结果. 例如(a+b)%p,若a+b的结果我们存储不了,再去取模,结果显然不对,我们为了防止溢出,可以先分别对a取模 ...
- 大数取模运算,快速幂取模运算
1.快速幂取模 http://www.cnblogs.com/yinger/archive/2011/06/08/2075043.html 快速幂取模就是在O(logn)内求出a^n mod b的值. ...
- java中的取模和取余_取模运算
本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 取模运算是求两个数相除的余数.[1] 取模运算("Modulus Operation")和取余运算(&qu ...
- java个人学习笔记:取模运算 整数除运算 +运算
如果对负数取模,可以把模数负号忽略不记,如:5%-2=1.但被模数是负数则不可忽略.此外,取模运算的结果不一定总是整数. 对于除号"/",它的整数除和小数除是有区别的:整数之间做除 ...
最新文章
- ROS Indigo下安装测试Xtion Pro
- Android之布局RelativeLayout
- BS程序代码与安全与基本攻击/防御模式
- Javascript Throttle Debounce
- [Windowns C]递归遍历指定目录下的子目录和文件
- 100个WordPress常用插件精选
- LaTeX常用的符号
- Lidar Studio点云处理与分析软件V1.1
- Qt编写onvif搜索和云台控制工具源码
- linux的镜像文件有什么用,【iso】iso是什么?iso是什么意思?
- 计算机技术在图形图像处理中的应用,计算机图形图像处理技术综述
- 协议实例说明--租房
- 数学中倒三角:梯度;正三角:拉普拉斯
- PGM学习之四 Factor,Reasoning
- 高清HDMI高清编码器(HDMI网络传输器)使用及前景
- 控制极限(UCL,LCL) 和规格极限(USL,LSL)
- 配置Ubuntu以及ssh
- html不间断滚动图片,不间断循环滚动图片,jsp网页代码
- 法里昂第一大学一座大楼楼顶爆炸起火 致至少3人伤
- windows计算机管理快捷键,windows系统常见快捷键大全
热门文章
- 十二、泛型、反射和异常
- MACIOS Socket编程
- 数据结构——树的C语言实现
- 存储器容量扩展——位扩展、字扩展
- JSP中get和post请求方式的区别及乱码解决方法
- 网页字段位置php改变,php实现子字符串位置相互对调互换的方法
- docker port如何增加端口_docker部署redis实战
- python关系运算符和逻辑运算符的优先级_python中逻辑运算符的优先级问题
- 装入归档文件时出现了一个错误linux_静态链接与动态链接(Linux)
- python自动搜索请求失败_http请求 request失败自动重新尝试代码示例