Chinaunix首页 | 论坛 | 博客
  • 博客访问: 286878
  • 博文数量: 69
  • 博客积分: 2946
  • 博客等级: 少校
  • 技术积分: 800
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-09 04:15
文章分类

全部博文(69)

文章存档

2013年(6)

2012年(16)

2011年(18)

2010年(29)

分类:

2010-08-03 00:20:47

这篇日志想简单介绍一下素数的判定。
有一个以前开始经常使用的方法,很原始,计算的效率很低,使用的范围很狭窄,主要在检验比较小的数。大致算法是:从1到n的平方根,都试除,看是否能够除尽。

另外一个算法,Miller-Rabin素数测试方法:
约在2500年前我国古代先贤就发现一个规律,2^2 -2 是2的倍数,2^3-2是3的倍数;2^5 – 2 是5的倍数;2^7 – 2是7的倍数;2^11-2是11的倍数;而且2、3、5、7、11都是素数。于是便提出了一个猜想,2^(n-1) ≡1 mod n ,则n是素数。
不过很遗憾,这个猜想是不成立的。法国数学家赛努斯首先提出2^340 ≡ 1 mod341,但是341不是素数。
Miller-Rabin方法正是基于上述的思路。
我们要判定n是不是素数?我们可以随机的取比较小的素数来做底,验证k^(n-1)≡1 mod n 是否成立??
选取比较小的素数,是为计算的方便;一般我们选择5个素数来测试这个,其精度基本上可以达到要求。
http://www.cnblogs.com/Knuth/archive/2009/09/04/1559949.html

阅读(781) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~