zoukankan      html  css  js  c++  java
  • Miller-Rabin素数测试学习小计

    1、Miller-Rabin是干啥的?它是用来检测一个数字(一般是很大的数字)是不是素数;

    2、Miller-Rabin算法基于的两个定理:

    (1)费尔马小定理:如果p是一个素数,且0<a<p,则a^(p-1)%p=1.利用费尔马小定理,对于给定的整数n,可以设计素数判定算法,通过 计算d=a^(n-1)%n来判断n的素性,当d!=1时,n肯定不是素数,当d=1时,n 很可能是素数.

    (2)二次探测定理:如果p是一个素数,且0<x<p,则方程x^2%p=1的解为:x=1或x=p-1.

    3、利用二次探测定理,可以再利用费尔马小定理计算a^(n-1)%n的过程中增加对整数n的二次探测,一旦发现违背二次探测条件,即得出n不是素数的结论.具体来说是这样的:如果n是素数,则(n-1)必是偶数,因此可令(n-1)=m*(2^q),其中m是正奇数,q是非负整数,考察下面的测试:

             a^(2m)%n; a^(4m)%n; …… ;a^(m*2^q)%n

    若上面的式子中a^(2^i*m)%n计算出1来,我们就要看看a^(2^(i-1)*m)是不是等于1或者n-1,若既不是1也不是n-1那么我们判断不是素数。

     

     

  • 相关阅读:
    C#泛型
    Chrome 中调试Javascript
    Oracle分页查询语句
    WordCount2.2
    第一周博客作业
    WordCount--统计输入文件的字符数、行数、单词数(java)--初级功能
    PHP数据库操作
    PHP安全函数
    PHP基础
    用户/目录操作
  • 原文地址:https://www.cnblogs.com/jianglangcaijin/p/3446859.html
Copyright © 2011-2022 走看看