在GF(28)域上,多项式相加相减结果相同,均为异或操作

x3+x2+1    对应的二进制为   1101       用整数表示就是  13

x2+x+1     对应的二进制为    0111  用整数表示就是  7

x3+x2+1  +  x2+x+1  = x3+2x2+x+2  = x3+x    等同于 1101⊕0111  = 1010    用整数表示就是 10  既是 13⊕7

def add(a, b):return a^bdef sub(a, b):return a^b

View Code

在GF(28)域上,多项式乘法

先模拟一下模2乘法运算

getBit的实现,乘法的实现

'''num为正整数并且小于32位
'''def getBit(num):bit = 0top_bit = 1for i in range(32):if top_bit & num != 0:bit = i + 1top_bit <<= 1return bit

View Code

# a、b为二进制的整数表示
def multiply(a, b):len1 = getBit(a)   # getBit函数返回 此整数表示的二进制的长度len2 = getBit(b)     #  假设 a=10 表示的二进制为 1010  则len1=4res_len = int(len1 + len2 - 1)res = 0x0for i in range(len1):temp = b * (a & 0x1)  # 每次a的第一位与b相乘temp <<= i  # 结果左移res ^= temp  # 异或 模2a >>= 1return res

View Code

除法的实现

'''多项式模2除法   X^3 / X^3+X+1   商 1 余 X+1  与整数相除略有不同返回值为整数 (商, 余数)
'''
def divide_and_mod(a, b):len1 = getBit(a)len2 = getBit(b)len3 = len1 - len2if a < b:if len3 == 0:return (1, a^b)else:return (0, a)top_bit = 1;top_bit <<= (len1 - 1)b <<= (len1 - len2)quotient = 0  # 商remainder = 0  # 余数# 除法运算,最后不包含for i in range(len3):quotient <<= 1if top_bit & a != 0:  # a最高位为1,则商为1quotient ^= 1a ^= belse:a ^= 0top_bit >>= 1b >>= 1# 最后一次运算与之前的运算规则不同,需要比较大小quotient <<= 1if a < b:remainder = aelse:quotient ^= 1remainder = a ^ breturn (quotient, remainder)

View Code

求最大公因式及逆元有欧几里得算法和扩展欧几里得算法得到

def divide(a, b):q, r = divide_and_mod(a, b)return qdef mod(a, b):q, r = divide_and_mod(a, b)return rdef gcd(a, b):r = mod(a, b)while r != 0:a = bb = rr = mod(a, b)return bdef findModInverse(a, m):if gcd(a, m) != 1:return Nonex1, x2 = 1, 0y1, y2 = 0, 1r = 1while r != 0:q = divide(m ,a)r = mod(m, a)x1, y1 = sub(x1, multiply(q, x2) ), sub(y1, multiply(q, y2))x1, x2 = x2, x1y1, y2 = y2, y1m, a = a, rreturn y1

View Code

转载于:https://www.cnblogs.com/YKang/p/7663737.html

多项式模2运算及求逆元相关推荐

  1. 初等数论--同余方程--同余方程运算:模逆运算,模指数运算

    初等数论--同余方程--同余方程运算:模逆运算,模指数运算 博主是初学初等数论(整除+同余+原根),本意是想整理一些较难理解的定理.算法,加深记忆也方便日后查找:如果有错,欢迎指正. 我整理成一个系列 ...

  2. BZOJ 3456: 城市规划 [多项式求逆元 DP]

    题意: 求出n个点的简单(无重边无自环)无向连通图数目. 方案数mod 1004535809(479 * 2 ^ 21 + 1)即可. n<=130000 DP求方案 g(n) n个点所有图的方 ...

  3. 取模除法(逆元)(费马小定理)(线性求逆元)

    文章目录 引言 逆元 费马小定理 内容 应用 证明 线性求逆元 thanks for reading! 引言 我们做题时经常会由于答案过大,被要求使答案对一个质数取模 我们都知道,加和乘对取模是没有影 ...

  4. 数学--数论--HDU1825(积性函数性质+和函数公式+快速模幂+非互质求逆元)

    As we all know, the next Olympic Games will be held in Beijing in 2008. So the year 2008 seems a lit ...

  5. 拓展 欧几里得算法 求逆元_ECC椭圆曲线加密算法:有限域和离散对数

    Hi all,我来翻译第二篇啦.若大家发现那些翻译的不够准确还望指出,不胜感激.首先放上原文链接: http://andrea.corbellini.name/2015/05/23/elliptic- ...

  6. “景驰科技杯”2018年华南理工大学程序设计竞赛 H-对称与反对称(扩展欧几里得求逆元)

    题目链接 题目描述: 给出一个N*N的方阵A.构造方阵B,C: 使得A = B + C.其中 B为对称矩阵,C为反对称矩阵. 对于方阵S中的任意元素,若(S)ij = (S)ji,则称S为对称矩阵 对 ...

  7. 线性求逆元模板_算法学习笔记(9):逆元

    https://zhuanlan.zhihu.com/p/105467597在数论中,如果 ,我们就说 和 在模 意义下互为乘法逆元,记作 . 逆元有什么用呢?我们常常遇到一些题目要求结果对一个大质数 ...

  8. 扩展欧几里得算法求逆元---乘法密码

    欧几里得算法 背景知识: 欧几里得算法:又叫做辗转相除法,用来求两个数的最大公约数.通过辗转相除,当余数为0的时候,最后的除数就是两个数的最大公约数. 例如:求20和11的最大公约数 每次将除数作为下 ...

  9. 扩展欧几里得算法(求逆元)

    扩展欧几里得算法(求逆元)总结 1.在RSA算法生成私钥的过程中涉及到了扩展欧几里得算法(简称exgcd),用来求解模的逆元. 2.首先引入逆元的概念: 逆元是模运算中的一个概念,我们通常说 A 是 ...

最新文章

  1. caffe 练习1:training LeNet on MNIST with Caffe/ 用LeNet识别手写字符集 Mnist------by 香蕉麦乐迪
  2. 玩家游戏账号被封十年,解封后一进游戏傻眼了:比当年还火?
  3. anguler 画面布局适应屏幕大小_前端开发常见的五大布局模式,绝对不要错过这篇分享!...
  4. 模式识别之分类---数学贝叶斯方法
  5. 关系数据库SQL之可编程性触发器
  6. 编译原理中词法分析--部分实现
  7. [转一下]未来卫星通信发展趋势
  8. CISCO路由器连接ADSL之PPPoE配置
  9. Java中基本数据类型的转换
  10. 如何入门分子动力学模拟?
  11. BPC电波授时信号的“零成本”伪造
  12. 君威u0073故障码解决_U0073故障码_U0073故障码是什么故障、排除方法、怎么消除_车主指南...
  13. AR模型参数估计、Y-W方程、L-D算法原理部分
  14. nachos学习笔记(一)
  15. 服务器相关 HTTP 请求错误
  16. while、do...while、for循环的使用
  17. 《微观经济学》 第十章
  18. 波哥大BRT带来的启示
  19. 如何在MacOS上卸载IPGuard的软件--LAgent/LSDhelper程序
  20. 从一到无穷大 #4 Lossy compression

热门文章

  1. 【第44题】【062题库】2019年OCP认证062考试新题
  2. linux内核数据结构之链表
  3. 制作Windows Server 2008安装启动U盘
  4. 比好莱坞市场大6倍—— 体育因数据分析而不同
  5. Sencha Touch 动态修改store的url
  6. 关于jsb中js与c++的相互调用
  7. 关于asp.net mvc中的cookie的对象传递以及加密解密
  8. Ansible — Playbooks
  9. 配置基于Devstack的嵌套KVM虚拟化
  10. 电感和磁珠的区别及应用场合和作用