乘法逆元(费小定理)

乘法逆元(费小定理)

乘法逆元
a , b a,b a,b互质,且满足同余方程 a x ≡ 1 ( m o d b ) ax \equiv 1 \pmod b ax1(modb)
则称 x x x a a a b b b的乘法逆元,记作 a − 1 a^{-1} a1
费马小定理
a a a p p p互质且 p p p为质数,则有 a p − 1 ≡ 1 ( m o d p ) a^{p -1} \equiv 1 \pmod p ap11(modp)
证明:
取与 p p p互质的序列 A = 1 , 2 , 3... , p − 1 A = 1,2,3 ... , p - 1 A=1,2,3...,p1
即证: ∏ i = 1 p − 1 a × A i ≡ ∏ i = 1 p − 1 A i ( m o d p ) \prod ^{p - 1}_{i = 1} a\times A_i \equiv \prod^{p - 1}_{i = 1}A_i \pmod p i=1p1a×Aii=1p1Ai(modp)
可证得:对于每一个 a × A i ( m o d p ) a \times A_i \pmod p a×Ai(modp)的余数是唯一的

假设: a A i ( m o d p ) a A_i \pmod p aAi(modp) a A j ( m o d p ) a A_j \pmod p aAj(modp)余数都是 r r r
则有
a A i = x p + r aA_i = xp + r aAi=xp+r
a A j = y p + r aA_j = yp + r aAj=yp+r
消去 r r r a ( A i − A j ) = p ( x − y ) a(A_i - A_j) = p(x - y) a(AiAj)=p(xy)
左右一定不等,因为左边不是p的倍数,矛盾

故有 a × A i ( m o d p ) a \times A_i \pmod p a×Ai(modp)的最终结果一定是等于序列 A A A的,即可得证
根据费马小定理
若有 a , p a,p a,p,其中 a , p a,p a,p互质且 p p p为质数,则有
a p − 1 ≡ 1 ( m o d p ) a^{p - 1} \equiv 1 \pmod p ap11(modp)
a × a p − 2 ≡ 1 ( m o d p ) a \times a ^{p - 2} \equiv 1 \pmod p a×ap21(modp)
由乘法逆元的定义可知 a p − 2 a^{p - 2} ap2就是 a a a p p p意义下的乘法逆元

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll ksm(ll a,ll b,ll p){
    ll res = 1;
    while(b){
        if(b & 1)res = res * a % p;
        a = a * a % p;
        b >>= 1;
    }
    return res;
}
int main(){
    ll a,p;cin >> a >> p;
    if(a % p){
        cout << ksm(a, p - 2, p) << endl;
    }
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值