算法数论概要
该算法有以下性质: 对s个不同的a,重复 调用这一算法,只要有一次算法返回为 False,就可肯定n不是素数。 如果算法每次返回都为True,则n是素数的 概率至少为1-2-s,因此对于足够大的s,就 可以非常肯定地相信n为素数。 Miller-Rabin算法的错误概率至多为1/4
1.3 利用n-1、n+1的因子分解的 素性检验
率 :如果算法对任何回答应该为“是”的 实例至多以 的概率给出不正确的回答“否” (该概率是对于给定输入算法在所有可能的随
一个偏“是”的Monte Carlo算法具有错误概
在建立RSA密码体制过程中,必须生成大的 “随机素数”,方法:先生成大的随机整数, 然后检测他们的素性。
2002年,Agrawal,kayal和Saxena证明了存在一个 素性检测的多项式时间确定性算法。 实际应用中,素性检测仍只要利用随机多项式时间 Monte Carlo算法,例如:Solovay-Strassen 算法 或Miller-Rabin算法(它们很快,但有一定的概率 可能将一个合数断言为素数)
200 以内的素数:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
对于大数的素性检验来说没有简单直接的方 法,本节介绍两种概率检验法,均为偏“是” 的Monte Carlo算法 一、 Miller-Rabin 算法
引理: 如果p为大于2的素数,则方程 x2≡1(mod p)的解只有x≡1和x≡-1。 证明:由x2≡1 mod p,有x2-1≡0 mod p, (x+1)(x-1)≡0 mod p,因此p|(x+1)或p|(x-1) 或 p|(x+1)且p|(x-1)。 若p|(x+1)且p|(x-1),则存在两个整数k和j, 使得x+1=kp,x-1=jp,两式相减得2=(k-j)p, 为不可能结果。所以有p|(x+1)或p|(x-1)。 设p|(x+1),则x+1=kp,因此x≡-1(mod p)。 类似地可得 x≡1(mod p)。(证毕)
引理的逆否命题为:如果方程x2≡1 mod p 有一解x0 {-1,1},那么p不为素数。 例如: 考虑方程x2≡1(mod 8)由Z8上模乘 法的结果得 12≡1 mod 8, 32≡1 mod 8, 52≡1 mod 8, 72≡1mod 8 又5≡-3 mod 8,7≡-1 mod 8,所以方程 的解为1,-1,3,-3,可见8不是素数。
奇完全数
偶完全数和梅森素数有一一对应关系,即,只要找到一 个梅森素数 2p 1 就有一个偶完全数 2p-1 (2p 1)
已知的完全数都是偶数,尚不知是否存在奇完全数,数 300 据结果显示没有比 10 小的奇完全数。
n
费马数
现在只发现了前5个费马数(即 Fn 22 1 , n=0,1,2,3,4)是素数,其余的费马数或者是合数,或者素性 未知。
算法数论
0 算法数论概述
算法数论研究数论中提出问题的算法 (包括并行算法,有时也包括计算机结 构),例如:素性检测、整数因子分解 和离散对数问题等 是一门融合数论和计算机科学的跨专业、 跨领域的学科。 目的:设计出有效的计算机算法(有时 是高速的计算机结构)用于数论中大规 模数值计算(包括验证)。
计算素数个数 (x)
(4 1022 ) =783964159852157952242, 最新纪录:
即,不超过 4 1022 的素数恰有
783964159852157952242个
…….
计算可行性
算法数论注重数论的算法方面且以设计出能解决各 类数论问题的有效算法为目标
从实际可计算角度,可将算法分为两类:
是发现已知最大素数的最有效途径;它的探究推动了数学 皇后——数论的研究,促进了计算技术、程序设计技术、 密码技术的发展以及快速傅立叶变换的应用。 探寻梅森素数最新的意义是:它促进了网格技术的发展。 而网格技术将是一项应用非常广阔、前景十分诱人的技术。 探寻梅森素数的方法还可用来测试计算机硬件运算是否正 确。 由于探寻梅森素数需要多种学科和技术的支持,所以许多 科学家认为:梅森素数的研究成果,在一定程度上反映了 一个国家的科技水平。英国顶尖科学家索托伊(M.Sautoy) 甚至认为它是标志科学发展的里程碑。
Pocklintin 定理 Proth定理 P135 P135
利用n+1的因子分解的素性检验 P136
2000多年以前古希腊数学家爱拉托散特尼发现一种找 出质数的方法称为爱拉托散特尼筛法 方法如下: 1不是质数去掉。 2是质数留下,之后所有2的倍数皆删掉。 3没删掉是质数留下,之后所有3的倍数皆删掉。 4已经删掉,5没删掉是质数留下,之后所有5的倍 数皆删掉。 6已经删掉,7没删掉是质数留下,之后所有7的倍 数皆删掉。 ……………………………… 依此类推即可找出所有质数。
利用n-1的因子分解的素性检验
费马小定理的卢卡斯反问题(1891) 如果存在整数a,满足(1)a n1 1(mod n)以及(2) a (n1)/p 1(mod n) 对n-1的每个素因子p都不成立,则n为素数。
缺陷:需要知道n-1的素因子分解,这是一个和因子分解n难度差不 多的问题,且比对n进行素性检测更困难。
椭圆曲线离散对数问题
梅森素数
迄今为止找到的梅森素数有47个, 2008年8月,美国加州大学洛杉矶分校(UCLA)的计算 机专家史密斯(E.Smith)通过参加一个名为“因特网 梅森素数大搜索”(GIMPS)的国际合作项目,发现了第 46个也是目前最大的梅森素数: ,它大约有 243112609 1 1300万位数(准确地说,是12978189位数),如果用普 通字号将这个巨数连续写下来,它的长度可超过 50公里! 最近,这一成就被美国的《时代》杂志评为“2008年度 50项最佳发明”之一,排名在第29位。 梅森素数的意义和价值
整数因子分解 最快的一般性算法是数域筛法(NFS),该算 法在合理假设的期望下的运行时间为
O(exp (c3 logN 3 (loglogN ) 2 ))
显然,NFS不是多项式时间算法,而是亚指数 时间算法。 NFS分解的最大整数是一个155位的整数: RSA-155(1999年5月)。
离散对数问题(有限域上的) 乘法群上的离散对数问题(DLP)与整 数因子分解问题类似(更难些),而且整数 因子分解方法(例如数域筛法)通常也适用 于离散对数问题。 注: 尽管目前没有人知道是否能知道出适 用的量子计算机,但目前已有量子算法可以 通过量子计算机在多项式时间内解决整数因 子分解问题和离散对数问题。
有效(好的)算法:可在多项式时间内运行完的算法
无效(坏的)算法:只能在指数时间内运行完的算法
下列两个问题是计算难处理的
素性检测问题
整数因子分解问题
1 素性检测算法
素性检测问题(PTP)可描述成如下简单判定 问题: 输入:大于1的整数n 输出:是, 若n为素数 否, 其他 理论上:验证n能否被2~n/2的任何整数整除
此算法有两个输入参数,n是待检验的数, a是小于n的整数。如果算法的返回值为 False,则n肯定不是素数,如果返回值为 True,则n有可能是素数。 for循环结束后,有d≡an-1 mod n,由 Fermat定理知,若n为素数,则d为1。因 此若d≠1,则n不为素数,所以返回False。 因为n-1≡-1 mod n,所以 (x≠1)and(x≠n-1),指x2≡1 (mod n)有不 在{-1,1}中的根,因此n不为素数,返回 False。
ቤተ መጻሕፍቲ ባይዱ
研究内容
素性检测
1. 素性检测最快的确定性算法是APRCL算法,该算法是 由Adleman、Pomerance、Rumely、Cohen和Lenstra 发明的,运行时间是
O(logN)clogloglogN
该算法有可能 在相对合理的时间内检测出1000位整数的素 性。 2. 目前最有实用价值的素性检测/证明算法是由Atkin和 Morain设计的椭圆曲线素性检测算法ECPP,该算法可在合 理的时间内,如在数周工作站时间内检测出几千位整数的 素性。
P, Q E(Fp ) 令 E / Fp 是定义在有限域上的椭圆曲线, 是E上的两个点。椭圆曲线离散对数问题(ECDLP)是 要找一个整数k使得在 E(Fp ) 有Q=kP成立。 当p很大时该问题被认为是个非常困难的问题,基 于这个原因, ECDLP已成为几种不同密码体制的基础。 现在已有像数域筛法这样的亚指数复杂度的指数 演算法来接有限域上的离散对数问题,但还没找到有 效的指数演算法来解椭圆曲线离散对数问题;而且, ECDLP问题可能没有指数演算法。 目前对ECDLP的研究重点在于设计像Xedni演算法 的新算法来解ECDLP。
1.1 确定性的严格素性检测
1.1.1 试除法
若n没有不超过
n 的素因子,则n为素数。
该法只须用2~[ n ]之间的素数(可由埃拉托色尼 筛法或使用含有 n 之前素数的素数表得到)来整除 n。 运算量:
O(2(logN) / 2 )
对于大整数的素性检测,并非完全实际有效。
1.2 素性检验的概率算法
Miller-Rabin的素性概率检测法。