逆元

逆元在数论中扮演着重要角色,特别是在模运算中解决除法问题。当需要计算(a/b)%mod时,直接除法不适用,需要找到b的逆元c,使得b*c ≡ 1 (mod m)。本文介绍了两种求逆元的方法:费马小定理和扩展欧几里得算法。费马小定理适用于质数模的情况,而扩展欧几里得算法能解决更一般的问题。
摘要由CSDN通过智能技术生成

为什么要求逆元:

因为计算(a/b)%mod时 (a/b)%mod != (a%mod)/(b%mod) 所以需要把除法变成乘法

设c是b的逆元 则:b*c≡1(mod m)

则(a/b)%m = (a/b)*1%m = (a/b)*b*c%m = a*c(mod m) 即a/b的模等于a*b的逆元的模

 

求逆元的方法:

1.费马小定理

费马小定理:假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p)

也就是a^(p-1) %p=1

所以假设 a*c = 1(mod p) 则 a*c = a^(p-1) (mod p) 

那么 c = a^(p-2) (mod p)

c是a的逆元

ll poww(ll a,ll b=mod-2)
{
    ll ans=1,base=a;
    while(b!=0)
    {
        if(b&1!=0) ans=(ans*base)%mod;
        base=(base*base)%mod;
        b>>=1;
    }
    return ans;
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值