这里引用了另一位博主对拉宾米勒算法的字面介绍:

米勒-拉宾算法:快速判断一个数是不是素数
需要用到的定理:
最小费马定理:如果n是素数,则(a ^ (n - 1)) % n恒等于1。
快速模取幂
米勒-拉宾算法就是结合上面两种,通过不断判断fmod(a, n - 1, n)的值是否为1来判断。这是一个概率算法,如果为1,不一定为素数,不为1,则必定是合数。循环判断多次就会让概率变得极为的小。
--------------------- 
作者:omsobliga 
来源:CSDN 
原文:https://blog.csdn.net/lhshaoren/article/details/7834055

以下给出拉宾米勒算法的python代码和注释:

import randomdef rabinMiller(num):#快速幂s=num-1t=0while s%2==0:s=s//2t+=1#最小费马定理for trials in range(5):a=random.randrange(2,num-1)v=pow(a,s,num)if v!=1:i=0while v!=(num-1):if i==t-1:return Falseelse:i=i+1v=(v**2)%numreturn Truedef isPrime(num):if num<2:return False#prime.txt是存放素数表的文件lowPrimes=open('prime.txt','r')if num in lowPrimes:return Truefor prime in lowPrimes:if num%prime==0:return Falsereturn rabinMiller(num)#generateLargePrime函数返回素数。它选出一个大的随机数保存到num
#再将num传到isPrime和rabinMiller进行判断是不是素数
#先isPrime后rabinMiller是因为复杂度先简后繁
def generateLargePrime(keysize=1024):while True:num=random.randrange(2**(keysize-1),2**keysize)if isPrime(num):return num

Python拉宾米勒(判断素数)相关推荐

  1. 算个欧拉函数给大家助助兴(米勒拉宾(判断素数)+Pollard_rho(求一个大数的因子 ))

    这篇博客讲的很好: https://www.cnblogs.com/ZERO-/p/9302169.html 题目描述 木南有一天学习了欧拉函数,知道了对正整数n,欧拉函数是小于n的正整数中与n互质的 ...

  2. Python使用多进程批量判断素数

    代码功能:使用进程池判断素数,统计100000000以内的素数个数. from multiprocessing import Pool def isPrime(n): if n<2: #非素数返 ...

  3. Python 内置函数—判断素数

    数学运算 abs():返回数值的绝对值: 例如: abs(-4) 4 divmod():返回两个数值的商和余数: 例如: divmod(7,2) (3,1) max():返回元素中的最大值: 例如: ...

  4. 用python穷举法判断素数_Python如何判断素数

    判断一个给定的正整数是否素数 输入格式: 输入在第一行给出一个正整数n(≤ 10),随后n行,每行给出一个小于1000000 的需要判断的正整数 输出格式: 对每个需要判断的正整数,如果它是素数,则在 ...

  5. 数论 判断素数:普通素数判别 线性筛 二次筛法求素数 米勒拉宾素数检验

    普通的素数判断法 当我们要判断一个数字是否是素数的时候,往往会直接看这个数字模1到这个数字的根号,看有没有等于零的,从而判断这个数字是不是素数,这样做的时间复杂度为O(sqrt(n)) bool is ...

  6. C++实现伪大素数生成算法(费马小定理判别法、米勒拉宾素数判定法)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.伪大素数生成原理 方法一 方法二 数学基础 二.费马小定理判别法 1.算法 2.代码实现 3.运行结果 二.米勒拉宾素数 ...

  7. 你知道如何判定一个大整数为素数吗?——米勒拉宾素数判定算法

    米勒拉宾算法的基本概念如下: 首先判断这个数n的奇偶性 若为偶数仅有2是质数 奇数则进入测试 测试方法: 首先确定几个基底a,范围在[2,n-1] 因为n是奇数,所以n-1必定为偶数 则n-1可以表示 ...

  8. 2018宁夏网络赛 B Goldbach (米勒拉宾素数测试)

    2018宁夏网络赛 B Goldbach (米勒拉宾素数测试) 题目链接 题目大意: 给你一个偶数n (2<n<=1e18) 让你把n分解成两个素数的和.(如果有多个输出任意一个) 解题思 ...

  9. 费马素性测试和米勒—拉宾素性测试

    chapter 1 Fermat's little theorem 费马小定理 费马小定理说的是:如果p是一个素数,那么对于任意一个整数a,a p − a 能被p整除,也可以用模运算表示如下: (p是 ...

  10. 【学习笔记】Miller-Rabin(米勒-拉宾)素性测试,附常用表

    @TOC 素性测试是检验一个给定的整数是否为素数的测试. 最简单的就是用 n\sqrt{n}n​ 以内的数去试除.这是确定性的算法,即能准确知道 nnn 是否为质数. 但今天学习的是一种随机算法. F ...

最新文章

  1. java去重复的集合_如何去除Java中List集合中的重复数据
  2. 动态链接库dll的两种加载方式
  3. mysql数据库程序设_MySQL数据库程序设计
  4. 【若依(ruoyi)】swagger 接口 @SessionAttribute 修饰的参数
  5. 【PAT甲级】1048 Find Coins (25 分) C++ 全部AC
  6. vue2.0项目引入element-ui
  7. mysql 安装 运维_MySQL自动化运维之安装篇
  8. CCD和CMOS摄像头成像原理以及其他区别
  9. 【OpenCV】OpenCV实战从入门到精通之 -- 基本图像绘制
  10. Linux 2.6中基于Sysenter的系统调用机制
  11. javascrip学习之 数据类型和变量
  12. netbeans使用教程
  13. Linux 按行分割文件(转载)
  14. 利用PowerShell复制SQLServer账户的所有权限
  15. 解析音视频网络传输技术之一
  16. 删库跑路?我劝你不要这样。
  17. 微信在服务器上发不了图片大小,为什么微信发不了图片?这四招教你解决难题...
  18. 四年磨一剑:我是如何拿到蚂蚁offer的?
  19. 糯米粉可以做什么好吃的 糯米粉做法大全
  20. 什么是 SHA 加密? SHA-1 与 SHA-2

热门文章

  1. 智能防盗报警系统前端报警设备的选择
  2. 希捷、西数、日立4TB硬盘大乱斗
  3. 解决Windows系统删除文件:文件正在使用,无法删除问题
  4. 勾股定理计算机语言,勾股定理公式计算器
  5. java 发送封包_【Java学习笔记】自动封包和解包(Autoboxing和AutoUnboxing)
  6. LVS-NAT基于NFS存储部署Discuz
  7. 音乐系统(译码作曲)
  8. android studio 导入一个已有的android studio project作为lib使
  9. MapGIS注记文字无损转入ArcGIS软件
  10. 记录LM3886制作辛酸历程