费马小定理求逆元

来源:互联网 发布:mac wow字体 编辑:程序博客网 时间:2024/06/01 23:55

对于正整数,如果有,那么把这个同余方程中的最小正整数解叫做的逆元。

 

逆元一般用扩展欧几里得算法来求得,如果为素数,那么还可以根据费马小定理得到逆元为

 

推导过程如下

因此逆元为a^(m-2)%m,用快速幂求。代码如下:

#include<iostream>#include<cmath>using namespace std;typedef long long LL;LL quick_mod(LL a,LL b,LL m) //快速幂求a^b%m; {LL ans=1;while(b){if(b&1) ans=ans*a%m;b>>=1;a=a*a%m;}return ans;}int main(){LL a,b,m;//m为素数cin>>a>>m;cout<<quick_mod(a,m-2,m)<<endl;return 0;}

原创粉丝点击