素数检验方法

一、费马小定理

如果 p 是一个素数,并且 a 是一个整数,满足 1<a<p,(即 a 与 p 互质)那么以下同余式成立:

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​

二、费马素数检验

如果存在一个整数 a,使得

​​​​​​​ ​​​​​​​

那么 n 一定不是素数

三、Carmichael

费马素数检验最大的缺陷在于存在一种特殊的合数

最小的卡迈克尔数是 561=3×11×17

因此,费马检验无法将561识别为合数。

四、欧拉准则

这里要用到先前文章(二次同余式和平方剩余)的勒让德符号

如果 p 是一个奇素数,并且 a 是一个与 p 互质的整数(即 gcd⁡(a,p)=1),那么

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​

结果为1, a 是模 p 的二次剩余 ;结果为-1,a 是模 p 的二次非剩余

五、欧拉拟素数检验

这个方法能够检测Carmichael!!!

六、Miller-Rabin强拟素数检验

这是目前最强大、最广泛使用的概率性素数检验算法

具体操作步骤可以参考: https://www.bilibili.com/video/BV1T44y1Z7Gx

相关推荐
燃于AC之乐36 分钟前
我的算法修炼之路--4 ———我和算法的爱恨情仇
算法·前缀和·贪心算法·背包问题·洛谷
MM_MS6 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
独自破碎E7 小时前
【二分法】寻找峰值
算法
mit6.8247 小时前
位运算|拆分贪心
算法
ghie90907 小时前
基于MATLAB的TLBO算法优化实现与改进
开发语言·算法·matlab
恋爱绝缘体17 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wuk9987 小时前
VSC优化算法MATLAB实现
开发语言·算法·matlab
Z1Jxxx8 小时前
加密算法加密算法
开发语言·c++·算法
乌萨奇也要立志学C++8 小时前
【洛谷】递归初阶 三道经典递归算法题(汉诺塔 / 占卜 DIY/FBI 树)详解
数据结构·c++·算法
vyuvyucd8 小时前
C++引用:高效编程的别名利器
算法