码迷,mamicode.com
首页 > 编程语言 > 详细

Miller_Rabin(米勒拉宾)素数测试算法

时间:2016-05-07 12:59:24      阅读:2927      评论:0      收藏:0      [点我收藏+]

标签:

首先需要知道两个定理:

1: 费马小定理: 假如p是素数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p)。

2:二次探测定理:如果p是素数,x是小于p的正整数,且技术分享,那么要么x=1,要么x=p-1。

  证明:这是显然的,因为技术分享相当于p能整除技术分享,也即p能整除(x+1)(x-1)。

  由于p是素数,那么只可能是x-1能被p整除(此时x=1) 或 x+1能被p整除(此时x=p-1)。

接着

如果a^(n-1) ≡ 1 (mod n)成立,Miller-Rabin算法不是立即找另一个a进行测试,而是看n-1是不是偶数。如果n-1是偶数,另u=(n-1)/2,并检查是否满足二次探测定理即a^u ≡ 1 或 a^u ≡ n - 1(mod n)。

一次测试的时间为(logn)

Miller_Rabin(米勒拉宾)素数测试算法

标签:

原文地址:http://www.cnblogs.com/jhz033/p/5467919.html

(2)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!