数论

最大公约数

int gcd(int a,int b){
  return b>0?gcd(b,a%b):a;
}

快速幂

typedef long long ll;
ll mod_pow(ll x, ll n, ll mod) {
    ll res = 1;
    while(n > 0) {
        if(n & 1)
            res = res * x % mod;
        x = x * x % mod;
        n >>= 1;
    }
    return res;
}

逆元

模运算性质

(a+b) % p==(a % p + b % p) % p
(a-b) % p==(a % p - b % p) % p
(a*b) % c==(a % c * b % c) % c

但是

(a / b) % p != (a % p)/(b % p) % p

此时引入逆元

b的逆元x
b * x ≡ 1 (mod p)
设a / b = k,则a / b ≡ k(mod p)

两边同乘 bx

a / b * bx ≡ k * 1 (mod p)
a * x ≡ k (mod p)

费马小定理

当p为质数且a不为m的倍数时,a^(p-1) ≡ 1 (mod p)
a的逆元就为a^(p-2) (mod p)

你可能感兴趣的:(数论)