许多部分材料取自百度百科

费马小定理及MR素数判断

费马小定理

内容

假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p)。

证明

先证两个引理:
①:若a,b,c为任意3个整数,m为正整数,且(m,c)=1,则当ac≡bc(mod m)时,有a≡b(mod m)
(这个很显然吧。。。)

②:设m是一个整数,且m>1,b是一个整数且(m,b)=1.如果a[1],a[2],a[3],a[4],…a[m]是模m的一个完全剩余系,则ba[1],ba[2],ba[3],ba[4],…ba[m]也构成模m的一个完全剩余系.

证明:若存在ba[i]、ba[j]使得bai≡baj(mod m)ba_i\equiv ba_j(mod\ m),则ai≡aj(mod m)a_i\equiv a_j(mod\ m)。然而根据完全剩余系的定义可知这并不存在。

然后再来证明费马小定理:
构造P的完全剩余系:{1,2,3…,p−1}\{1,2,3\dots ,p-1\}

因为(a,p)=1(a,p)=1,根据引理②可得{a,2a,3a…,n}\{a,2a,3a\dots,n\}也是P的完全剩余系。

由完全剩余系的性质可得:

(p−1)!≡(p−1)!ap−1(mod p)(p-1)!\equiv(p-1)!a^{p-1}(mod\ p)

两边同时除以(p−1)!(p-1)!,得ap−1≡1(mod p)a^{p-1}\equiv 1(mod\ p)

证毕。

应用

费马小定理是逆元的求解方法之一。还可以快速计算形如ab≡c (mod p)a^b\equiv c\ (mod\ p)这样的东西(当然p要是质数)
还有就是MR素数判断

MR素数判断

一般的素数判断用的是筛法。但是当素数比较大时,可能就无能为力了(判单个数最快是n√\sqrt{n})这时我们就可以考虑MR素数判断。
全名:Miller-Rabin素数测试,利用费马小定理判断一个数是否是质数。

当p为素数时,ap−1≡1(mod p)a^{p-1}\equiv1(mod\ p),而当p不为素数时,上式有很大概率不成立。于是我们可以多取几个aa来快速判断pp是否为质数。

但是有这么一种合数,对于任意(a,p)=1(a,p)=1,ap−1≡1(mod p)a^{p-1}\equiv 1(mod\ p)都成立。这种数叫做卡迈克尔数。当然,这种数是很少的,在1~100000000范围内的整数中,只有255个卡迈克尔数。

而为了防止这种情况出现,有一种东西,叫二次探测定理

如果p是素数,且x2≡1(mod p)x^2\equiv1(mod\ p),那么x=1x=1或x=p−1x=p-1
这个很显然。x2≡1(mod p)x^2\equiv1(mod\ p),则p∣(x2−1)p\mid (x^2-1),即p∣(x−1)(x+1)p\mid (x-1)(x+1)。
由于p是素数,那么只有可能p∣(x−1)p\mid(x-1)(此时x=1)或p∣(x+1)p\mid (x+1)(此时x=p-1)。

于是我们只需要每次把幂/2,再不断算就行了。

费马小定理及MR素数判断相关推荐

  1. 判断素数(费马小定理)

    1)Sieve of Eratosthenes筛法 由于一个合数总是可以分解成若干个质数的乘积,那么如果把质数(最初只知道2是质数)的倍数都去掉,那么剩下的就是质数了.例如要查找100以内的质数,首先 ...

  2. 【费马小定理】判断素数

    [知识点] ·费马小定理:假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p).即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的 ...

  3. 关于素数常用结论--威尔逊定理、欧拉定理、费马小定理、米勒罗宾算法

    再需要判定的数比较大时,用枚举法肯定不行的,但目前数学界也没有任何一种又快又准确的判定素数的方法,并且也证明了素数不存在任何一种通项表达式.但作为初等数论中最大的一部分内容,数学家们对素数性质进行了大 ...

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

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

  5. SICP:费马小定理与素数检测

    原帖地址:http://www.nowamagic.net/librarys/veda/detail/2329 费马小定理 关于费马小定理,读到注解的时候,还是有点震撼的. 皮埃尔•得•费马(1601 ...

  6. 判断素数问题(费马小定理,蒙哥马利模幂)

    题目描述 给定多个大于 1 的整数,判断是否为素数 输入 输入多行,每行是一个大于 1 的整数或字母 q 输出 对于每一行输入: 如果该行是正整数,那么输出一行,输出内容为 T 或 F,代表这个正整数 ...

  7. 费马小定理 素性判断 蒙哥马利算法

    转载于http://blog.csdn.net/arvonzhang/article/details/8564836 1.约定 x%y为x取模y,即x除以y所得的余数,当x<y时,x%y=x,所 ...

  8. 费马小定理 素数判定 蒙哥马利算法

    转自:http://www.cnblogs.com/Knuth/archive/2009/09/04/1559949.html 约定: x%y为x取模y,即x除以y所得的余数,当x<y时,x%y ...

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

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

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

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

最新文章

  1. OpenMV生成AprilTag码
  2. 服务器报错您的主机中的软件中止了一个已建立的连接
  3. arc下内存泄漏的解决小技巧
  4. Java(21)_ ^、|、运算符
  5. SqlHelper简单实现(通过Expression和反射)4.对象反射Helper类
  6. AUTOSAR专业知识篇(六)-自动驾驶传感器的选择与布置
  7. ecshop后台增加模板页的方法
  8. 程序员写的数字代表什么_代表性不足的国家的程序员可以取得成功的6种方法...
  9. python避坑_Django搭建项目实战与避坑细节详解
  10. Objective-C:代理
  11. c语言ch能储存多少字符,二级c语言程序设计习题与解答ch5-7函数字符(11页)-原创力文档...
  12. 上班一族“黑话”辞典大曝光
  13. 盘点12个Python数据可视化库,通吃任何领域
  14. python shell 运行时不打印日志_shell编程
  15. VC++使用dump定位release程序崩溃问题
  16. 使用 python 在多个word文件中提取关键字
  17. java:布局方法(边界布局)
  18. 2017最新申请苹果开发者账号,申请appstore开发者账号,申请app开发者账号,申请苹果企业公司开发者账号
  19. 基于坡度理论的点云滤波方法(二)
  20. K210学习笔记(十)——二维码识别

热门文章

  1. 【Arduino】wokwi在线编程仿真学习
  2. Unable to build Hibernate SessionFactory和Caused by: org.hibernate.tool.schema.spi.SchemaManagementEx
  3. 一张纸对折多少次后能达到珠穆朗玛峰的高度
  4. 游戏程序常规设计模式
  5. java 字符串 空白字符_Java String中移除空白字符的多种方式汇总
  6. java 判断空白字符_Java Character.isWhitespace() 方法,判断字符是否为空白字符
  7. [HNOI2007]紧急疏散evacuate
  8. 逆向app - 简单apk工具的安装
  9. Gspay 和 95epay
  10. 2022年中级经济师考试中级人力资源练习题及答案