当前位置:首页 » 操作系统 » rabinmiller算法

rabinmiller算法

发布时间: 2025-07-11 13:16:57

① Miller Rabin算法的优化实现

Miller-Rabin算法最为耗时的步骤在2.2模幂操作和2.3.2 循环。对算法的优化实现主要集中在对这两部分运算的优 化。对模幂操作的优化有两种途径:减少模幂算法中的模乘 操作和优化模乘操作。在求模幂的过程中不能先求幂最后一次求模,这样会产生一个十分巨大的中间结果,造成实际的 不可操作,所以在求模幂的算法中用模乘代替乘法,使得中 间结果的长度不超过模的长度。对模幂算法的优化,我们使 用改进的滑动窗口算法结合Montgomery模乘和模平方算法。表1给出模幂算法的比较。 模幂算法 预先计算 模平方 模乘法 模平方 模乘法 最坏情况 平均情况 平方乘算法滑动窗口类算法 改进的滑动窗口算法 011 02k -32k-1-1 tt-(k-1)≤次数≤t t-(k-1)≤次数≤t t (t/k)-1 (t/k)-1 t/2 t/k(2k-1)/ 2kk≤t/k(2 -1)/ * 模幂算法比较,其中k是窗口大小,根据情况 选择以达到最优,t是指数的二进制位数。 优化的模幂算法描述:输入: x,e=(e tet-1?e1e0)2,其中et=1,k≥1( 窗口大小)输出: xe mod n1、预计算1.1、x1← MontMul(x, R2,n),x2←MontSqu(x 1, n)1.2、对i 从1 到2k-1-1计算x2i+1←MontMul(x2i-1, x2,n)2、A←R,i ←t3、 当i≥ 0时作下面的操作: 3.1、如果ei=0,A←MontSqu(A ,n),i← i-13.2、否则找到最长的位串eiei-1?es使得i-s+1≤k并且es=1,计算3.2.1、A <-A2i-s+1 , (利 用MontSqu函数计算)3.2.2、A <-A*X(ee ...e )2 ,(利 用MontMul函数计算)3.2.3、i ←s-14、A←MontMul(A ,1 ,n)5、返回A其中MontMul(x,y,n) 是Montgomery模乘函数,函数输出 结果为x*y*R-1 mod n,MontSqu(x,n) 是Montgomery模平方函 数,输出结果为x2R-1 mod n。模乘算法如果采用大整数乘法 和除法求模乘,因为涉及耗时的除法操作,所以要相对较 慢,结合大整数乘法和Barrett求模算法可以用2(n2+3n+1) 步 单精度乘法完成。使用Montgomery求模算法结合大整数乘法 算法,可以 在 2n(n+1) 步单精度乘法内完成算法。 Montgomery模平方的操作可以在3n(n+1) /2步单精度乘法内 完成,而Barrett模平方需要(3n(n+3)/2+1) 步单精度乘法。结 合改进的滑动窗口算法和Montgomery类算法,可以得到目前 非特殊情况下的最优的模幂算法。在Miller-Rabin算法的2.3.2循环中的模平方操作我们没有 使用Montgomery模平方算法,因为该算法给出的结果带有R-1这个参数,在2.3.2循环中处理掉这个参数将占整个循环运 行时间中的很大部分,尤其是在循环的控制参数s 相对较小的时候。我们在这里使用大整数平方算法结合Barrett求模算 法,2.3.2的循环最坏情况需要(s-1)(3n(n+3)/2+1)步单精度乘法。

② Miller Rabin算法基于概率的素数测试算法的基本框架

在概率素数测试算法领域,一种常见的基本框架被广泛应用[1]。这个框架的核心是处理给定的正奇数n。首先,我们需要定义一个集合W(n),它属于Z(n),后者是模n的非负整数集合,具备以下特性:



  • 对于Z(n)中的任意非负整数a,我们能在多项式时间内判断其是否属于W(n)。

  • 如果n是素数,那么W(n)中没有元素;

  • 相反,若n为合数,W(n)的元素数量至少达到n/2。


合数n的证据存在于W(n),而Z(n)中不属于W(n)的元素则称为n的伪证。该算法的核心思想是通过构造满足上述规则的W(n),对n进行随机选择Z(n)中的元素a进行检验。若a属于W(n),我们确认n为合数;反之,如果a不属于W(n),则n为素数的概率大于1/2。为了增加判断的准确度,我们可以对n重复这个过程t轮,这样n是素数的概率会控制在1-(1/2)^t以上,从而提高测试的可靠性。

热点内容
安卓哪里有李小龙 发布:2025-07-12 13:31:49 浏览:438
苹果保存账号密码在哪里找 发布:2025-07-12 13:31:07 浏览:98
东北大学c语言考试题 发布:2025-07-12 13:26:40 浏览:755
sha256在线加密 发布:2025-07-12 13:19:06 浏览:227
vbnet创建数据库连接 发布:2025-07-12 13:15:34 浏览:232
为什么社保卡在社康还要密码 发布:2025-07-12 13:11:42 浏览:811
取随机数php 发布:2025-07-12 12:58:16 浏览:840
如何配置组合音响 发布:2025-07-12 12:53:54 浏览:93
c语言幂计算 发布:2025-07-12 12:52:36 浏览:566
兔费WLAN密码多少 发布:2025-07-12 12:50:59 浏览:861