Barrett reduction of polynomials

对于f,g∈Zp[x]f,g \in Z_p[x]f,g∈Zp​[x],其中ppp是素数。那么:
fmodg=f−⌊fg⌋gf \mod g = f - \lfloor \frac{f}{g} \rfloor g fmodg=f−⌊gf​⌋g
其中的分式属于分式域:1/g∈{fg∣f,g∈Zp[x]}1/g \in \{ \dfrac{f}{g} | f,g \in Z_p[x] \}1/g∈{gf​∣f,g∈Zp​[x]}

我们寻找一个m∈Zp[x]m \in Z_p[x]m∈Zp​[x],使得:
1g=mR\frac{1}{g} = \frac{m}{R} g1​=Rm​
其中,R=xk∈Zp[x]R=x^k \in Z_p[x]R=xk∈Zp​[x],kkk是某个正整数

那么选取:
m=⌊Rg⌋∈Zp[x]m = \lfloor \frac{R}{g} \rfloor \in Z_p[x] m=⌊gR​⌋∈Zp​[x]
误差大小为:
e=1g−⌊Rg⌋Re = \frac{1}{g} - \dfrac{\lfloor \frac{R}{g} \rfloor}{R} e=g1​−R⌊gR​⌋​
于是,
fmodg≈f−⌊f⋅mR⌋gf \mod g \approx f - \lfloor \frac{f \cdot m}{R} \rfloor g fmodg≈f−⌊Rf⋅m​⌋g
选取足够大的kkk,使得f⋅ef \cdot ef⋅e的系数足够小,那么:
fmodg=f−((f⋅m)≫k)g∈Zp[x]f \mod g = f - ((f \cdot m) \gg k) g \in Z_p[x] fmodg=f−((f⋅m)≫k)g∈Zp​[x]
这里的≫\gg≫运算定义为(∑i=0n−1aixi≫k):=∑i=kn−1aixi−k(\sum_{i=0}^{n-1}a_i x^i \gg k) := \sum_{i=k}^{n-1}a_i x^{i-k}(∑i=0n−1​ai​xi≫k):=∑i=kn−1​ai​xi−k

Montgomery multiplication of polynomials

对于f,g,h∈Zp[x]f,g,h \in Z_p[x]f,g,h∈Zp​[x],其中ppp是素数。计算:f⋅gmodhf \cdot g \mod hf⋅gmodh

首先,寻找R=xk∈Zp[x]R=x^k \in Z_p[x]R=xk∈Zp​[x],其中kkk是某个正整数,使得gcd(R,h)=1gcd(R,h)=1gcd(R,h)=1

计算:
h−1⋅h≡1modRR−1⋅R≡1modhh^{-1} \cdot h \equiv 1 \mod R\\ R^{-1} \cdot R \equiv 1 \mod h\\ h−1⋅h≡1modRR−1⋅R≡1modh
做可逆映射:
f‾=fRmodhg‾=gRmodh\overline{f} = f R \mod h\\ \overline{g} = g R \mod h\\ f​=fRmodhg​=gRmodh
那么
fg‾=fgR=f‾⋅g‾⋅R−1modh\overline{f g} = f g R = \overline{f} \cdot \overline{g} \cdot R^{-1} \mod h fg​=fgR=f​⋅g​⋅R−1modh
简记T=f‾⋅g‾T = \overline{f} \cdot \overline{g}T=f​⋅g​,则fg‾=TR−1\overline{f g} = TR^{-1}fg​=TR−1

寻找m∈Zp[x]m \in Z_p[x]m∈Zp​[x],使得
R∣T+mhR \mid T+mh R∣T+mh
那么
T+mh≡0modRT+mh \equiv 0 \mod R T+mh≡0modR
从而
m=−Th−1modRm = -Th^{-1} \mod R m=−Th−1modR
于是
fg‾≡(T+mh)R−1=(T−(Th−1modR)⋅h)⋅R−1modh\overline{f g} \equiv (T+mh)R^{-1} = (T-(Th^{-1} \mod R) \cdot h) \cdot R^{-1} \mod h fg​≡(T+mh)R−1=(T−(Th−1modR)⋅h)⋅R−1modh
由于R=xkR=x^kR=xk,所以
fg‾=(T−Lowk(Th−1)⋅h)≫k\overline{f g} = (T-Low_k(Th^{-1}) \cdot h) \gg k fg​=(T−Lowk​(Th−1)⋅h)≫k
这里定义Lowk(∑i=0n−1aixi):=∑i=0min⁡(k,n)−1aixiLow_k(\sum_{i=0}^{n-1}a_i x^i) := \sum_{i=0}^{\min(k,n)-1}a_i x^iLowk​(∑i=0n−1​ai​xi):=∑i=0min(k,n)−1​ai​xi

最后,做逆映射fg=fg‾R−1modhfg = \overline{f g} R^{-1} \mod hfg=fg​R−1modh,计算方法与上述的计算TR−1modhTR^{-1} \mod hTR−1modh的过程相同。其实叫做:Montgomery reduction

与Barrett不同,这里选取任意的kkk值,结果都是正确的。但如果k<nk<nk<n,计算出的结果可能是冗余的。

总结

  • Barrett reduction of polynomials:将多项式取模运算,转化为多项式乘法以及“右移”。
  • Montgomery multiplication of polynomials:将多项式模乘运算,转化为多项式乘法、“截断”以及“右移”。

Barrett And Montgomery of Polynomials相关推荐

  1. Barrett模乘与蒙哥马利模乘算法(附源码实现)

    一.背景 公钥密码学(Public-Key Cryptography, PKC)由Diffie与Hellman于1970年代提出,在现代信息社会中得到了广泛应用.此后基于各种数学困难问题,越来越多的公 ...

  2. Pat甲级 1002 A+B for Polynomials

    Pat甲级 1002 A+B for Polynomials 思路 代码 题目网址 https://pintia.cn/problem-sets/994805342720868352/problems ...

  3. PAT甲级1009 Product of Polynomials:[C++题解]多项式乘法、高精度乘法

    文章目录 题目分析 题目链接 题目分析 多项用一个数组来表示,数组下标表示多项式的次幂,存的内容表示多项式的系数. 然后用两重循环来计算多项式的乘法: for i : 第二个式子for j:第一个式子 ...

  4. PAT甲级1002 A+B for Polynomials:[C++题解]字符串、多项式加法或高精度加法

    文章目录 题目分析 题目链接 题目分析 本题数据范围是1000 ,可以开一个数组 X [ ] ,X[i ]表示多项式中次幂是i的系数是多少. 因此,本题可以开两个数组,对应相加,然后输出非零项即可. ...

  5. 【PAT】1009. Product of Polynomials (25)

    题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1009 分析:简单题.相乘时指数相加,系数相乘即可,输出时按指数从高到低的顺序.注意点:多项式相 ...

  6. PAT甲级 -- 1009 Product of Polynomials (25 分)

    This time, you are supposed to find A×B where A and B are two polynomials. Input Specification: Each ...

  7. PAT甲级 -- 1002 A+B for Polynomials (25 分)

    This time, you are supposed to find A+B where A and B are two polynomials. Input Specification: Each ...

  8. 【测试点0分析】1009 Product of Polynomials (25 分)

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 This time, you are supposed to find A×B where A and B are two pol ...

  9. 1002 A+B for Polynomials (25分)_29行代码AC

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 this time, you are supposed to find A+B where A and B are two pol ...

  10. 【PAT - 甲级1009】Product of Polynomials (25分)(模拟,细节)

    题干: This time, you are supposed to find A×B where A and B are two polynomials. Input Specification: ...

最新文章

  1. java Apache Commons jar包简介
  2. R语言ggplot2可视化分面图(facet_wrap)、使用size参数自定义设置分面图标签栏(灰色标签栏)中的标签文本的字体大小
  3. mysql5.7.23权限问题_部署MySQL5.7时的权限问题
  4. 配置web site 在IIS 6.0
  5. 牛客第四次多校Maximum Mode
  6. 图形基本变换c语言代码,图形变换-C语言课程设计.doc
  7. python中pop用法_Python Set pop()用法及代码示例
  8. 蓝桥杯 基础练习 特殊回文数
  9. it专员职责_【IT专员工作内容|工作职责|IT专员做什么】-看准网
  10. python合并两个数据框_python-3.x - 如何使用匹配索引合并两个数据框? - SO中文参考 - www.soinside.com...
  11. css布局Absolute的垂直水平居中
  12. Python SQLite3 教程
  13. win7打开计算机一片空白,Win7系统打开文件夹查看选项发现一片空白怎么办
  14. 客服坐席聊天页面html,WebSocket实现简单客服聊天系统
  15. 适用于数据中心和边缘应用的液冷技术
  16. CString查找子字符串
  17. 全球No.1集装箱人工智能领军企业中集飞瞳,已完成上百万AI集装箱箱况检测,上亿箱信息识别,全球最先进集装箱AI动态感知箱况检测
  18. 【Cocos2d-X】独立开发并发布自己的第一款android手游——SpaceWar
  19. SXSSFWorkbook导入/导出Excel文档简单操作
  20. 2023合肥学院计算机考研信息汇总

热门文章

  1. 如何给自己的网站添加小图标
  2. OpenGL学习之旅(三)——Bezier曲线理论与OpenGL实现
  3. 求解-----组合优化问题
  4. 风暴孵化分享:新手小白想做手游代理可不可以?
  5. 国外服务器修改dns地址,怎样设置国外DNS国外DNS服务器域名解析方法.doc
  6. vue中的浏览量_vue项目中统计页面访问量PV UV
  7. Python学习第二课-----绘制股票K线图(不使用mpl_finance包)
  8. Windows安全中心功能介绍
  9. 企业物流管理与最新IT技术
  10. 史上最全CAD快捷键大全汇总