模n運算

注意:只是我的理解,可能有不正確的地方編程

對於整數a、n,模n運算就是求a除以n的餘數
編程語言

若是a=10,n=3,那麼a除以n的商爲3,餘數爲1spa

C語言等編程語言中常使用%表明求模運算:a%n英文

10%3=1語言

英文中也使用mod表明求模運算:a mod nco

10 mod 3 = 1background


模n運算的加法:

(a+b)%n = (a%n + b%n)%n

 

模n運算的減法:

(a-b)%n = (a%n - b%n)%n


模n運算的乘法:

(a*b)%n = (a*(b%n))%n = ((a%n)*b)%n = ((a%n)*(b%n))%n


模n運算的乘方:

(a^b)%n = ((a%n)^b)%n

(((a^b)%n)*((a^c)%n))%n = ((((a%n)^b)%n)*(((a%n)^c)%n))%n = ((a%n)^b)*(a%n)^c))%n = ((a%n)^(b+c))%n = (a^(b+c))%n


將模n運算中的加減乘運算抽象化:

若是將上面等式中的%n從等式中略去,而後使用(mod n)方式標在等式後,以代表該計算不是普通的加減乘等運算,是基於模n的運算,則各運算能夠寫做:

a+b = a+b  (mod n)

a-b = a-b  (mod n)

a*b = a*b  (mod n)

a^b = a^b  (mod n)

(a^b)*(a^c) = a^(b+c)  (mod n)

這樣就獲得了基於模n的加減乘運算。

b^(-1)的定義

對於普通乘法,b*b^(-1)=1,那麼基於模n的b^(-1)應該知足:

b*b^(-1)=1  (mod n)

由(2*5)%3=1能夠看出

2^(-1) = 5  (mod 3)

5^(-1) = 2  (mod 3)

由(2*2)%3=1能夠看出

2^(-1) = 2  (mod 3)

能夠看出b^(-1)是一系列數,但一般只取<n的值

b^(-1)也稱爲b關於n的模反元素

由b^(-1)定義,能夠獲得抽象化的基於模n的除法

a/b = a*(b^(-1))  (mod n) 

相關文章
相關標籤/搜索