同餘模定理

2021-09-03 07:07:23 字數 1552 閱讀 2883

原文:同餘模定理

定義

所謂的同餘,顧名思義,就是許多的數被乙個數 d 去除,有相同的餘數。d 數學上的稱謂為模。如 a = 6, b = 1, d = 5, 則我們說 a 和 b 是模 d 同餘的。因為他們都有相同的餘數 1 。

數學上的記法為:

a≡ b(mod d)

可以看出當 n < d 的時候,所有的 n 都對 d 同商,比如時鐘上的小時數,都小於 12,所以小時數都是模 12 的同餘.對於同餘有三種說法都是等價的,分別為:

(1) a 和 b 是模 d 同餘的.

(2) 存在某個整數 n ,使得 a = b + nd .

(3) d 整除 a - b .

可以通過換算得出上面三個說話都是正確而且是等價的.

定律

同餘公式也有許多我們常見的定律,比如相等律,結合律,交換律,傳遞律….如下面的表示:

a≡a(mod d)

a≡b(mod d)→b≡a(mod d)

(a≡b(mod d),b≡c(mod d))→a≡c(mod d)

如果a≡x(mod d),b≡m(mod d),則

4) a+b≡x+m (mod d)

5) a-b≡x-m(mod d)

6) ab≡xm(mod d )

應用

( a+

b)%c

=(a%

c+b%

c)%c

(a+b) \% c=(a\%c+b\%c)\%c

(a+b)%

c=(a

%c+b

%c)%c(a

∗b)%

c=(a

%c∗b

%c)%

c(a*b)\%c=(a\%c*b\%c)\%c

(a∗b)%

c=(a

%c∗b

%c)%

c;對於大數的求餘,聯想到進製轉換時的方法,得到

舉例如下,設大數 m=1234, 模 n

就等於(((

(1∗10

)%n+

2%n)

%n∗10

%n+3

%n)%

n∗10%

n+4%

n)%n

((((1 * 10) \% n + 2 \% n) \% n * 10 \% n + 3 \% n) \% n * 10 \% n + 4 \% n) \% n

((((1∗

10)%

n+2%

n)%n

∗10%

n+3%

n)%n

∗10%

n+4%

n)%n

大數求餘的簡單模板:

#include

//大數求餘,其中 n(除數)不是大數

char a[

1000];

intmain()

return0;

}

同餘模定理

定義 所謂的同餘,顧名思義,就是許多的數被乙個數d去除,有相同的餘數。d數學上的稱謂為模。如a 6,b 1,d 5,則我們說a和b是模d同餘的。因為他們都有相同的餘數1。數學上的記法為 a b mod d 可以看出當n 1 a和b是模d同餘的.2 存在某個整數n,使得a b nd 3 d整除a b....

ACM同餘模定理(模版)

今天將同餘模定理重新好好看了一下。同餘模定理 所謂的同餘,顧名思義,就是許多的數被乙個數d去除,有相同的餘數。d數學上的稱謂為模。如a 6,b 1,d 5,則我們說a和b是模d同餘的。因為他們都有相同的餘數1。有很多定理,但是我們只需要用到兩個,其餘的太過簡單就不再敘述。應用 a b c a c b...

同餘模定理的應用

一 公式 同餘模定理 a b mod a mod b mod mod a b mod a mod b mod mod 二 應用 求s description s n n 5 求s n 除以3的餘數 input 每行輸入乙個整數n,0 n 1000000 注意n的範圍,int long long in...