素数的介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2、素数表的构造
• Eratosthenes筛法 Eratosthenes筛法 2 3 4 5 10 11 12 13 18 19 26 27 20 28 21 29
6 14 22 30
7 15
8 9 16 17 25
23 24 31
32 33
经过众多学者的艰辛努力, D.N.Lehmer 于 1914年编织出了10000000以内的素数表。
• 公式n^2+n+41有一个非常奇特的性质. 为揭示这一特性, 我们考察它的二次求 根公式的判别式d=1^2-4 1 41 =-163. 163有什么特别的地方?有! 请看
π × 163
e
≈ 262537412640768744.000000000000
• 作为Hilbert第十问题的一个推论, 马蒂 雅舍维奇证明了: 存在一个多元多项式 P(x_1,x_2,...,x_n), 其正值构成的集 合恰好是素数的全体. 遗憾的是, 他并 没有给出怎样具体地构造这样的多项式. 后经众多数学家的努力, 终于在1977年 构造出了一个具有26个变量25次的素数 生成多项式!
• 后人验证出F_n (n<=19)均为合数。因此 有人猜测F_n(n>4)都是合数。 • Fermat数F_n与正多边形做图有紧密的联 系. 古代数学家认为,当n为大于6的素 数时,正n边形不能用圆规与直尺做出。 但是,在1796年,19岁的德国数学家 Gauss找到了用直尺与圆规做正17边形的 方法。这一辉煌的成果轰动了整个数学 界。
数学实验之五 --- 素数
中国科学技术大学数学系 陈发来
2
13466917
−1
实验内容
素数的个数 素数表的构造 素数的判别 最大的素数 求解素数的公式 素数的分布
1、素数的个数
• 算术基本定理:任何整数都可以分解 为
n = p p2 L pk
d1 1 d2
dk
• 设
p1 , p2 ,L, pn 为所有的素数。考察
实际上,大约2500年前,中国古代数学家 就发现了上述结论。他们由此得出:如 果 2n ≡ 2 (mod 2) ,则n为素数。该判别法 的运算量为O(log^3n).
通过编程计算发现,反过来结论并不成 立。例如,
2340 ≡ 1 mod 341
但是341=11x34为合数!称使得
2 p −1 ≡ 1 mod p
4、最大的素数
• Mersenne数 Mersenne数 M n = 2n − 1 的数称为Mersenne数。 形如 利用Mersenne数可以构造出非常大的素 数。 很显然,如果n是合数,则M_n也为合数, 但n为素数时,M_n不一定为素数。例如, M_11=2047=23x89是合数。
1644年Mersenne宣称,对n=2,3,5,13, 17,19,31,67,127,257, M_n都是素数, 而且对其它n<257, M_n都是合数。 然而,后人证明M_67, M_257不是素数, 而M_61, M_89, M_107都是素数。
• 1980年数学家Adleman, Rumely, Cohen和Lenstra研究出一种非常复杂、具 有高度技巧的素数判别方法,检验一个 20位数的素性只需10秒,对一个5 0位数,只要15秒,而一个100位 数只用40秒。如果用试除法,判别一 个50位数的素性要一百亿年!
• • • • • • •
位数 227832 258716 378632 420921 895932 909526 2098960 4053945
时间 1992 1994 1996 1996 1997 1998 1999 2002
• Mersenne数素性的判别方法 Mersenne数素性的判别方法 定义数列u_0=4, u_{k+1}= u_k^2-2 (mod M_n), k=1,2,..., n. 如果u_{n-1} =0(mod M_n), 则M_n为素数. 否则, M_n 为合数.
3、素数的判别
威尔逊判别法 n是素数的充要条件是
( n − 1)!+1 ≡ 0 (mod n )
这里a ≡ b mod p 是指 a-b 被p整除。 不过该算法的运算量为O(nlogn^2),计 算量太大。
• Fermat判别法 Fermat判别法 如果p是素数,a与p互素,那么
a
p −1
≡ 1 mod p
• 五年后他进一步证明了: 一个正n边行可 用直尺与园规作图的充要条件是, n=2^k 或者n=2^k p_1 p_2... p_r, 其中 p_1,p_2,...,p_r为不同的Fermat数. 特 别地, 正17边形可以用直尺与园规做出. • 此后,数学家梨西罗与盖尔美斯给出了 正257边形与正65537边形的做图法!
• 素性判别的多项式算法 给定一个n位的整数,假设某一算法能在 f(n)步内判断出该整数是否素数。如果f(n) 是一个多项式的话,则称该算法具有多 项式复杂性,称该问题是“多项式可解 的”。如果不存在一个算法其具有多项 式的计算复杂性,则称该问题属于NP问 题。
• 2002年8月,印度理工大学计算机系的三 位学者提出了整数素性判别的多项式算 法!即素性判别问题是P类问题。他们指 出算法复杂性一般为O(n^12)。如果提供 某些启发线索的话,算法的复杂性可以 降到O(n^6)甚至O(n^3). • 一个令人关注的问题是,该算法是否会 威胁现有的RSA公钥密码体系的安全?
• 利用伪素数表,可以给出判别素数的新方 法:如果p不整除2^n-1, 则p为合数;如果 p整除2^n-1, 且在伪素数表中,则p为合数, 否则,p是素数。 • 伪素数可以推广到a-伪素数。令人惊奇的 是,存在这样的数p, 它对任何a都是伪素 数。例如,561=3x11x17就是这样一个伪 素数,即 a 560 ≡ 1 (mod 561)
a
2
a ≠ (mod n ) n
• 维路于1978年指出,上述常数C=70. • 由此可以设计如下多项式算法: 对任意n, 依次对a=1,2,…,70(logn)^2检验 上式是否成立。若对每一个a都不成立, 则n为素数。否则,n 为合数。 上述算法的运算量为O(logn)^5.
• 是否存在单变量整系数的多项式, 它只 生成素数并且生成所有的素数? • 更一般地,是否存在一个生成素数的多变 量函数公式? • 如果这样的公式不存在, 能否找到一个 虽不能给出全部但能给出无穷多个素数 (且只给出素数)的公式?
来自百度文库
• Fermat数 Fermat数 形如F_n=2^{2^n}+1的数被称为 Fermat数。 Fermat宣称,对所有的整数n, F_n永远是 素数。 的确, F_0=3, F_1=5, F_2=17, F_3=257, F_4=65537都是素数。 但Euler指出 F_5=4294967297=641 6700417 是合数。
N = p1 p2 L pn + 1
如果N为合数,则N必以某些 pi 为因子。 这是不可能的! 虽然素数有无穷多个,但随着整数范围 越来越大,素数似乎越来越稀少。 [1,100]----25 [1000,1100]---16 [100000, 100100]---6 [10000000,10000100]---2
成立的p为伪素数。
注意同余的计算:
2
340
= ( 2 ) = 1024 =
10 34 34 34
(3 × 341 + 1) ≡ 1 mod 341
进一步,伪素数有多少个?
答案是无穷多个。实际上,数学家迈 罗在1903年证明,如果n为伪素数, 那么2^n-1也是伪素数。 不过,同素数个数相比,伪素数的个 数非常少。例如,在2x10^10之内, 伪素数不到素数的百万分之三。因此, 可以认为 Fermat定理的逆定理几乎成 立。
• 试除法 假设我们已经找到了前n个素数p_1=2, p_2=3, ...,p_n, 为了寻找下一个素数我 们从p_n+2开始依次检验每一个整数N, 看 N是否能被某个p_i, i=1,2,...,n整除. 如果N能被前面的某个素数整除, 则N为合 数. 否则N即为下 一个素数p_{n+1}. 为提高算法的效率,只需用不超过 N 的素数去除N。
a
n −1
≡ 1 (mod n ),
gcd(a
( n −1) / q
− 1, n ) = 1
则n是素数。
• 基于广义黎曼猜想的判别 1976年,缪内发现了素性判别与黎曼猜 想之间的一个深刻联系。他的结论是: 在广义黎曼假设下,存在常数C, 对任何 整数n, 若n为合数,则存在a<C(logn)^2 使得 n −1
• 用 (n)表示不超过n的素数的个数, (m,n)表示区间[m,n]内素数的个数. 固定d,绘制点列(i, (3^i,3^i+d)), i=1,2,…,N.
d = 100
25 20 15 10 5
10
20
30
40
50
d = 1000
150 125 100 75 50 25
10
20
30
40
50
6、素数的分布
• 素数沿数轴的分布 素数沿数轴的分布 • (1)随着整数范围的扩大,素数是不是 越来越稀疏?稀疏的程度是否单调地增 加? • (2)相邻素数之间的间隔值有哪些? 它 们各重复多少次? 哪些间隔值的重复次 数多? 最大间隔值是多少? 随整数范围 扩大, 最大间隔值是否也随之增大?
• (3)间隔差为2的素数对是否有无穷多 个? 更一般地, 间隔差为某一个固定偶 数的素数对是否有无穷多个? 是否存在 相邻的素数, 其间隔值可以任意大?
267 − 1 = 193707721 × 761838257287
• 截止2002年2月, 数学家仅发现了39个 Mersenne素数.
n 86143 110503 132049 216091 位数 25962 33265 39751 65050 时间 1982 1983 1983 1985
n 756839 859433 1257787 1398269 2976221 3021377 6972593 13466917
• • • • •
关于Fermat数主要研究的问题是: (1)如何分解Fermat数? (2)Fermat素数是否只有有限个? (3)Fermat合数是否有无穷多个? (4)Fermat数有没有平方因子?
• Euler素数生成公式 Euler素数生成公式 Euler曾研究过公式:f(n)=n^2+n+41. 可以验证,当n=0,1,…,39时,f(n)都是 素数,但f(40)是合数。有趣的是,公式 能给出相当多的素数。
概率判别法 Lehmann: 给定p, 判断它是否为素数: (1)选择一个小于p的随机数a; (2)如果a与p不互素,则p为合数; (3)计算 J=a^(p-1) mod p; (4)如果 J<>1或-1, 那么p为合数; (5)如果 J=1或-1, 那么p不是素数 的可能性最多是50%.
• 重复k次实验,那么p不是素数的可能性 不超过1/2^k. • 利用上述算法可以产生大的随机素数: • (1)产生随机数p; • (2)确保p不被较小的素数整除。 • (3)产生随机数a, 利用上述算法检测p 的素性。直到经过多次测试为止。
关于Mersenne素数的进一步问题: 关于Mersenne素数的进一步问题 Mersenne素数的进一步问题 (1)Mersenne素数是否有无穷多个? (2)对什么样的n,M_n是素数?是否存在 求n的公式?至少使M_n为素数的n应该具有 什么性质? (3)如果M_n是合数,如果分解M_n?
5、生成素数的公式
• 这样的数称为绝对伪素数,也称迈克尔 数。如果迈克尔数只有有限个,则对 n>M, 素数的判别变得比较容易。但迈克 尔可能有无限个,这使得直接用Fermat 定理判别素性变得困难。
• n-1检验法 检验法 假设n-1=FR, F>R, gcd(F,R)=1. 如果对F的 每一个素因子q都存在一个整数a>1满足
• 将素数从小到大顺序排列p_1=2, p_2=3, ..., 用d_n=p_{n+1}-p_n表示相邻 素数间的间隔. 计算d_1,d_2,..., d_N(如 N=1000, 10000), 然后将点(p_n,d_n)标在 平面坐标系中.
相关文档
最新文档