Barrett And Montgomery of Polynomials
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−1aixi≫k):=∑i=kn−1aixi−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−1aixi):=∑i=0min(k,n)−1aixi
最后,做逆映射fg=fg‾R−1modhfg = \overline{f g} R^{-1} \mod hfg=fgR−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相关推荐
- Barrett模乘与蒙哥马利模乘算法(附源码实现)
一.背景 公钥密码学(Public-Key Cryptography, PKC)由Diffie与Hellman于1970年代提出,在现代信息社会中得到了广泛应用.此后基于各种数学困难问题,越来越多的公 ...
- Pat甲级 1002 A+B for Polynomials
Pat甲级 1002 A+B for Polynomials 思路 代码 题目网址 https://pintia.cn/problem-sets/994805342720868352/problems ...
- PAT甲级1009 Product of Polynomials:[C++题解]多项式乘法、高精度乘法
文章目录 题目分析 题目链接 题目分析 多项用一个数组来表示,数组下标表示多项式的次幂,存的内容表示多项式的系数. 然后用两重循环来计算多项式的乘法: for i : 第二个式子for j:第一个式子 ...
- PAT甲级1002 A+B for Polynomials:[C++题解]字符串、多项式加法或高精度加法
文章目录 题目分析 题目链接 题目分析 本题数据范围是1000 ,可以开一个数组 X [ ] ,X[i ]表示多项式中次幂是i的系数是多少. 因此,本题可以开两个数组,对应相加,然后输出非零项即可. ...
- 【PAT】1009. Product of Polynomials (25)
题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1009 分析:简单题.相乘时指数相加,系数相乘即可,输出时按指数从高到低的顺序.注意点:多项式相 ...
- 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 ...
- 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 ...
- 【测试点0分析】1009 Product of Polynomials (25 分)
立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 This time, you are supposed to find A×B where A and B are two pol ...
- 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 ...
- 【PAT - 甲级1009】Product of Polynomials (25分)(模拟,细节)
题干: This time, you are supposed to find A×B where A and B are two polynomials. Input Specification: ...
最新文章
- java Apache Commons jar包简介
- R语言ggplot2可视化分面图(facet_wrap)、使用size参数自定义设置分面图标签栏(灰色标签栏)中的标签文本的字体大小
- mysql5.7.23权限问题_部署MySQL5.7时的权限问题
- 配置web site 在IIS 6.0
- 牛客第四次多校Maximum Mode
- 图形基本变换c语言代码,图形变换-C语言课程设计.doc
- python中pop用法_Python Set pop()用法及代码示例
- 蓝桥杯 基础练习 特殊回文数
- it专员职责_【IT专员工作内容|工作职责|IT专员做什么】-看准网
- python合并两个数据框_python-3.x - 如何使用匹配索引合并两个数据框? - SO中文参考 - www.soinside.com...
- css布局Absolute的垂直水平居中
- Python SQLite3 教程
- win7打开计算机一片空白,Win7系统打开文件夹查看选项发现一片空白怎么办
- 客服坐席聊天页面html,WebSocket实现简单客服聊天系统
- 适用于数据中心和边缘应用的液冷技术
- CString查找子字符串
- 全球No.1集装箱人工智能领军企业中集飞瞳,已完成上百万AI集装箱箱况检测,上亿箱信息识别,全球最先进集装箱AI动态感知箱况检测
- 【Cocos2d-X】独立开发并发布自己的第一款android手游——SpaceWar
- SXSSFWorkbook导入/导出Excel文档简单操作
- 2023合肥学院计算机考研信息汇总