一些數學知識&題

zjr20120321發表於2024-10-03

歐幾里得演算法

費馬小定理

當a,p都是是質數時,a^(p-1)=1(mod p)

證明:

舉個例子 a=2,p=5;

1,2,3,4 集合(1) {1,2,3,4...,(p-1)}
2,4,6,8 => %5 => 2,4,1,3 集合(2) {1a%p,2a%p,3a%p,4a%p...,(p-1)a%p}

我們發現{1,2,3,4}和{2,4,1,3}只是位置不同,成積相同

怎麼個一定乘積相同法?

反證法:

首先(1)一定不會有相同,(2)的證法如下

ai=aj (mod P) => a(i-j)=0 (mod p) => p|a(i-j) 這可能嗎?p是質數

證畢

裴屬定理

證明:c|ax,c|by,所以c|ax+by,證畢:)

求逆元(老重要了!!!)

  • 擴充套件歐幾里得演算法

點選檢視程式碼
void Exgcd(ll a, ll b, ll &x, ll &y) {
    if (!b) x = 1, y = 0;
    else Exgcd(b, a % b, y, x), y -= a / b * x;
}
int main() {
    ll x, y;
    Exgcd (a, p, x, y);
    x = (x % p + p) % p;
    printf ("%d\n", x); //x是a在mod p下的逆元
}
  • 線性方法

求i的逆元

點選檢視程式碼
inv[1] = 1;
for(int i = 1; i < p; ++ i)
    inv[i] = (p - p / i) * inv[p % i] % p;//這裡有個問題困擾了我很久,為什麼(p-p/i)=-(p/i) ? 因為 -(p/i)%p=p-(p/i) 不知道的去查

對與中國剩餘定理

相關文章