说实话,费马质数测试是有点坑的,并不能保证这个数真的是一个质数。费马质数测试的理论依据是费马小定理Fermat’s little theorem。费马小定理的内容是,对于一个质数p,和一个与他互质的数a,有下列关系:
ap−1≡1modpa^{p-1}\equiv 1\;mod\;p ap−1≡1modp
  好消息是大部分合数都不能通过费马测试,只有少数合数能通过费马测试,这类数叫做卡迈克尔数Carmichael numbers,比如3∗11∗17=5613*11*17=5613∗11∗17=561就是个卡迈克尔数。至于指数,可以用二进制快速幂计算指数。
  在编程中,一般是随机选择五个数字进行费马测试。如果通过了就认为这个数字很大可能为质数。
  以下是python实现:

# _*_ coding:utf-8 _*_
import randomdef binary_exponentiation(base, power):power_2 = 1r = 1p = basewhile (power_2 := power_2 << 1) <= power:p = p * pif power_2 & power != 0:r *= preturn rdef is_prim(n):if n <= 4:return n == 2 or n == 3for i in range(5):a = random.randint(2, n)r = binary_exponentiation(a, (n - 1)) % nif r != 1:return Falsereturn Trueif __name__ == '__main__':print(is_prim(10000))print(is_prim(911))print(is_prim(561))print(is_prim(341))

  我这四个数字的测试结果是:

False
True
True
False

  341是不能通过费马小定理测试的。但是我在某度百科看到了这样一个结论:

  希望大家擦亮眼睛,自己多写写代码去验证,毕竟权威也是会出错的。

3.3 费马质数测试相关推荐

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

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

  2. 4.1 费马质数分解

      RSA算法的基础就是对于两个大质数的乘积进行质因数分解是非常慢的.比如对于一个300位的十进制数字进行质因数分解,普通电脑需要上百万年时间.但是如果这两个大质数比较接近,那使用费马质数分解就不需要 ...

  3. 费马素数(费马质数)

    0x01 普遍形式 费马素数也叫费马质数. 其中 n 为非负整数. 0x02 历史 法国数学家费马于1640年提出了以下猜想: 可以看出,前4个是质数,因为第5个数实在太大了,费马认为是质数. 由此提 ...

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

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

  5. 【原创】【数论】质数判断方法汇总及证明(上-费马素性检测与卡迈克尔数)

    质数 一.定义: 对于一个整数p,除了1和p之外没有别的整因数的整数,称为质数. 若p为质数,则除p=1*p外没有别的分解方式. 二.性质: ≤n的质数粗略的有n/ln(n)个.(非常粗略,误差较大, ...

  6. 费马小定理与等比数列的求和(MOD 质数)

    费马小定理:任意整数a, a^p≡a (mod p),p是质数. 定理:1.对a/b≡a*x (mod n),则称x 为b的乘法逆元,记为b^-1. 2.当模数p为质数,且b与p互质(即b不为p的倍数 ...

  7. c语言生成两位随机素数算法,[算法]费马小定理求质数的算法之Miller-Rabin算法,C语言实现 | 李大仁博客...

    今天讲点比较高级的算法,目的也很简单,求质数,但是应用一种新的算法Miller-Rabin算法,这是一种利用了概率和费马小定理的算法设计,有点玄乎吧,其实本人也是刚接触这种算法,这是一种纯数学的解法, ...

  8. 【学习笔记】高斯整数、高斯素数、费马平方和(全部相关概念及例题详解)《初等数论及其应用》

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 以下内容摘自 我的文章:算法竞赛中的数论问题 - 数论全家桶(信奥 / 数竞 / ACM)作者孟繁宇, ...

  9. 费马小定理与素数判定

    费马小定理是初等数论四大定理(威尔逊定理,欧拉定理(数论中的欧拉定理,即欧拉函数),中国剩余定理和费马小定理)之一,在初等数论中有着非常广泛和重要的应用.实际上,它是欧拉定理的一个特殊情况. 其内容为 ...

最新文章

  1. python getostime_Python os.getrandom()用法及代码示例
  2. python中的引用怎么理解_python 引用和对象理解
  3. template 标签
  4. 5G手机将不用流量可免费看电视,网友:流量免费,内容付费?
  5. 回转体怎么划分六面体网格_一文了解ANSYS Meshing 高级网格划分技术
  6. 以后给孩子起名字不用发愁了,先存着
  7. python爬取58同城房子发布的手机号码_python爬虫:爬取58同城武汉地区商品房信息(最后碰到了58同城的反爬机制,吓得我不敢说话···)...
  8. Xcode可以清理哪些缓存?
  9. 春节假期 最强抢票攻略
  10. 特斯拉降价也无法阻挡国内新能源汽车厂商前进的步伐
  11. 【Midjourney教程】设计麻瓜也能10分钟上架一套表情包
  12. python模拟ios_使用Xcode + Python进行IOS运动轨迹模拟!
  13. mos管的rc吸收电路计算_RC吸收计算应用
  14. 基于MATLAB的MIMO信道估计(附完整代码与分析)
  15. Linux计划任务、周期性任务执行
  16. 《SVN宇宙版教程》:第五章 TortoiseSVN中Repo-browser介绍
  17. wps高亮怎么取消_一组WPS表格小技巧,简单实用
  18. 我的几个提升工作效率的小软件(持续更新中...)
  19. DBTC——流动性、使用人数自我驱动增长的分叉币
  20. 失落城堡获取服务器信息,《失落城堡》充值及炸服问题说明

热门文章

  1. 2021-04-06-MSF之永恒之蓝
  2. 如何在把微信公众号生成链接
  3. 7-2 531 字符串_小写变大写
  4. 在CSS里什么是父元素和兄弟元素?老是提到父元素和兄弟元素?
  5. 解决谷歌浏览器提示您的链接不是私密链接
  6. el元素与jstl标签
  7. 如何把身份证扫描成电子版?证件转电子版,这3个方法超好用
  8. OpenCV——PS 滤镜, 浮雕效果
  9. 【FPGA】QuartusII13.0实现组合逻辑 3/8 译码器
  10. Python 爬虫学习笔记(十(2))scrapy爬取图书电商实战详解