求逆元的两种方法

来源:互联网 发布:程序员转行当老师 编辑:程序博客网 时间:2024/06/05 07:07

扩展欧几里得算法求逆元 ax ≡ 1 (mod n) 其中a,n互质。复杂度:O(logN)

LL extend_gcd(LL a, LL b, LL &x, LL& y) {    if (b == 0) {        x = 1, y = 0;        return a;    }    else {        LL r = extend_gcd(b, a % b, y, x);        y -= x * (a / b);        return r;    }}LL inv(LL a, LL n) {    LL x, y;    extend_gcd(a, n, x, y);    x = (x % n + n) % n;    return x;}

费马小定理求逆元(M必须是质数)

费马小定理(Fermat Theory)数论中的一个重要定理,其内容为: 假如p是质数,且Gcd(a,p)=1,那么 a(p-1) ≡1(mod p)。即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。

quickpow是快速幂。

long long inv(long long a) {    return quickpow(a, mod - 2);}

0 0
原创粉丝点击