论文网
English Papers
万事OK网
发表论文
 
 首页 > IT文章 > 程序设计 >
素数算法

[科技论文网] http://www.scipapers.com    2007-12-01  

    素数算法

    素数是这样的整数,它除了表示为它自己和1的乘积以外,无论他表示为任何两个整数的乘积。
    素数算法:
    1:是从2开始用“是则留下,不是则去掉”的方法把所有的数列出来(一直列到你不想再往下列为止,比方说,一直列到10,000)。第一个数是2,它是一个素数,所以应当把它留下来,然后继续往下数,每隔一个数删去一个数,这样就能把所有能被2整除、因而不是素数的数都去掉。在留下的最小的数当中,排在2 后面的是3,这是第二个素数,因此应该把它留下,然后从它开始往后数,每隔两个数删去一个,这样就能把所有能被3整除的数全都去掉。下一个未去掉的数是 5,然后往后每隔4个数删去一个,以除去所有能被5整除的数。再下一个数是7,往后每隔6个数删去一个;再下一个数是11,往后每隔10个数删一个;再下一个是13,往后每隔12个数删一个。就这样依法做下去。

    但是编程我们一般不采用上面的方法,并不说这中方法计算机实现不了,或者说实现算法比较复杂。因为它更像一个数学推理。下面为通常所用算法:
    设N=2^127-1是一个38位数,要验证它是否为素数,有下面几个不同的方法:
    1.遍历2以上N的平方根以下的每一个整数,是不是能整除N;(这是最基本的方法)
    2.遍历2以上N的平方根以下的每一个素数,是不是能整除N;(这个方法是上面方法的改进,但要求N平方根以下的素数已全部知道)

    (以下为用于长数)
    3.采用Rabin-Miller算法(
    1978 年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。 RSA的安全性依赖于大数难于分解这一特点。);
    4.
    AKS 算法(Agrawal、Kayal和Saxena);
    验算结果,假设计算机能每秒钟计算1亿次除法,那么
    算法1要用4136年,算法2要用93年,算法3只要不到1秒钟!

    Rabin -Miller算法是典型的验证一个数字是否为素数的方法。判断素数的方法是Rabin-Miller概率测试,那么他具体的流程是什么呢。假设我们要判断n是不是素数,首先我们必须保证n 是个奇数,那么我们就可以把n 表示为 n = (2^r)*s+1,注意s 也必须是一个奇数。然后我们就要选择一个随机的整数a (1<=a<=n-1),接下来我们就是要判断 a^s=1 (mod n) 或a^((2^j)*s)= -1(mod n)(0<=j如果任意一式成立,我们就说n通过了测试,但是有可能不是素数也能通过测试。所以我们通常要做多次这样的测试,以确保我们得到的是一个素数。(DDS的标准是要经过50次测试)
     采用Rabin-Miller算法进行验算
    首先选择一个代测的随机数p,计算b,b是2整除p-1的次数。然后计算m,使得n=1+(2^b)m。
    (1) 选择一个小于p的随机数a。
    (2) 设j=0且z=a^m mod p
    (3) 如果z=1或z=p-1,那麽p通过测试,可能使素数
    (4) 如果j>0且z=1, 那麽p不是素数
    (5) 设j=j+1。如果j且z<>p-1,设z=z^2 mod p,然后回到(4)。如果z=p-1,那麽p通过测试,可能为素数。
    (6) 如果j=b 且z<>p-1,不是素数

        来源:

声明:本文由网友推荐或作者提交,版权归原作者所有,刊登此文仅为传播知识,展示研究成果,提高文章引用率。未经原作者授权,禁止用于任何形式的商业行为。科技论文网倡导尊重知识、尊重劳动、保护原创、知识共享。由于部分论文文章来于网络,文章作者不祥,请相关的原创作者与我们联系,以便加上您的署名。

  
素数算法
下面没有链接了     马踏棋盘算法分析
最新论文
·[程序设计]素数算法
·[程序设计]马踏棋盘算法分析
·[程序设计]字典树实现源代码
·[程序设计]Java和C#的Hash算法
·[程序设计]hash表及如何选择hash函数
·[程序设计]一致性哈希(Consistent Hash
·[程序设计]对冒泡算法的改进
·[程序设计]杨辉三角算法源码
·[程序设计] C脚本递归算法-计算八皇后问题
·[程序设计]经典算法-算术表达式求值
 
 

搜索论文

Google
论文分类

论文网 论文发表网 论文 免费论文网 找论文网 毕业论文 中国论文网 英语论文 百度论文 聘教网 易搜
 免费发布论文    中国论文网 2008版权所有  业务联系:pinjiao@126.com