ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Miller Rabin 总结

2021-01-26 19:33:09  阅读:172  来源: 互联网

标签:总结 return pmod Miller LL long equiv 质数 Rabin


费马小定理

\(a^p\equiv a\pmod p\)
在 p 是质数时成立,考虑 rand 一个 a 来判定
但是有一类数,满足费马小定理却又不是质数,如 561

二次探测定理

若 p 是质数且 \(b^2\equiv 1\pmod p,0<x<p\)
原式减一可得\(b^2-1\equiv 0\pmod p\),平方差\((b+1)(b-1)\equiv 0\pmod p\)
故 p 一定可以被 (b+1) 和 (b-1) 其中至少一个整除,所以 \(b=1,p-1\) 。若 b=1 ,可以继续探测

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef unsigned long long uLL;
typedef long double LD;
inline LL Abs(LL x) { return x<0?-x:x; }
inline LL Mul(uLL x,uLL y,LL p) { return (x*y-(uLL)((LD)x/p*y)*p+p)%p; }
inline LL Pow(LL x,LL y,LL p){
	register LL res=1;
	for(;y;y>>=1,x=Mul(x,x,p))
	if(y&1)res=Mul(res,x,p);
	return res;
}
inline bool Mr(LL n,LL p) {
    if(Pow(p,n-1,n)!=1)return 0;
    register LL q=n-1,o;
    while(!(q&1)) {
        q>>=1,o=Pow(p,q,n);
        if(o!=1 && o!=n-1)return 0;
        if(o==n-1)return 1;
    }
    return 1;
}
inline bool Prime(LL n) {
    if(n<2)return false;
    if(n==2||n==3||n==5||n==7||n==43)return true;
    return Mr(n,2)&&Mr(n,3)&&Mr(n,5)&&Mr(n,7)&&Mr(n,43);
}
int main() {
    srand(20080816);
    return 0;
}

标签:总结,return,pmod,Miller,LL,long,equiv,质数,Rabin
来源: https://www.cnblogs.com/KonjakLAF/p/14332068.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有