日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

同余知识点全析

發(fā)布時(shí)間:2024/9/18 综合教程 53 生活家
生活随笔 收集整理的這篇文章主要介紹了 同余知识点全析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

淺談歐拉定理

本篇隨筆簡(jiǎn)單講解一下信息學(xué)奧林匹克競(jìng)賽數(shù)論部分歐拉定理這一知識(shí)點(diǎn)。介紹的內(nèi)容大致分為這么幾個(gè)部分:“同余的基本概念、費(fèi)馬小定理、歐拉定理及其推論、乘法逆元”

同余的基本概念

同余的概念啊非常簡(jiǎn)單啦:如果兩個(gè)整數(shù)(a,b)除以一個(gè)數(shù)(m)的余數(shù)相等的話,那么就叫做(a,b)在模(m)的意義上同余。

記作:

[aequiv b\,\,\,(mod\,\,m)
]

那么根據(jù)同余的這個(gè)定義,我們很容易能推導(dǎo)出一個(gè)性質(zhì):如果兩個(gè)數(shù)(a,b)在模(m)的意義下同余,那么(a-b)就是(m)的倍數(shù),這是顯然的。

以及,如果(a\%m=1),那么就可以被改寫成這樣的式子:

[aequiv 1\,\,\,(mod\,\,m)
]

這個(gè)轉(zhuǎn)化的正確性也是顯然的。

費(fèi)馬小定理

費(fèi)馬小定理也非常簡(jiǎn)單啦!用語言描述就是,如果一個(gè)數(shù)(p)是質(zhì)數(shù),那么對(duì)于一個(gè)不為(p)的倍數(shù)的整數(shù)(a),有(a^{p-1}equiv 1\,\,\,(mod\,\,p))。那么把這個(gè)結(jié)論兩邊同時(shí)乘上一個(gè)(a),即可得出:對(duì)于任意的整數(shù)(a),(a)的(p)次冪與(a)在模(p)的意義上同余。

即:

[a^pequiv a\,\,\,(mod\,\,p)
]

證明過程由于筆者水平有限,請(qǐng)參閱百度百科:

引理1.
  若a,b,c為任意3個(gè)整數(shù),m為正整數(shù),且(m,c)=1,則當(dāng)a·c≡b·c(mod m)時(shí),有a≡b(mod m)。
  證明:a·c≡b·c(mod m)可得ac–bc≡0(mod m)可得(a-b)·c≡0(mod m)。因?yàn)?m,c)=1即m,c互質(zhì),c可以約去,a– b≡0(mod m)可得a≡b(mod m)。 [2]

引理2.
  設(shè)m是一個(gè)整數(shù)且m>1,b是一個(gè)整數(shù)且(m,b)=1。如果a[1],a[2],a[3],a[4],…a[m]是模m的一個(gè)完全剩余系,則b·a[1],b·a[2],b·a[3],b·a[4],…b·a[m]也構(gòu)成模m的一個(gè)完全剩余系。
  證明:若存在2個(gè)整數(shù)b·a[i]和b·a[j]同余即b·a[i]≡b·a[j](mod m)..(i>=1 && j>=1),根據(jù)引理1則有a[i]≡a[j](mod m)。根據(jù)完全剩余系的定義可知這是不可能的,因此不存在2個(gè)整數(shù)b·a[i]和b·a[j]同余。

所以b·a[1],b·a[2],b·a[3],b·a[4],…b·a[m]構(gòu)成模m的一個(gè)完全剩余系。

構(gòu)造素?cái)?shù)

的完全

因?yàn)?/p>

,由引理2可得

也是p的一個(gè)完全剩余系。由完全剩余系的性質(zhì),

易知

,兩邊可約去

這樣就證明了費(fèi)馬小定理。

(結(jié)論必須要記住)

[a^pequiv a\,\,\,(mod\,\,p)
]

歐拉定理

在學(xué)習(xí)歐拉定理之前,需要先學(xué)習(xí)一下歐拉函數(shù)。推薦本蒟蒻的這篇博客:

歐拉函數(shù)詳解

那么有了這個(gè)知識(shí)做鋪墊,我們就可以得出歐拉定理的式子:

[a^{phi(p)}equiv1\,\,\,(mod\,\,p)
]

也就是說,如果(a,p)為整數(shù)且(a,p)互質(zhì),那么(a)的(p)的歐拉函數(shù)次冪與(1)在模(p)意義下同余。

(以下證明摘自百度百科。)

證明

將1~n中與n互質(zhì)的數(shù)按順序排布:x1,x2……xφ(n) (顯然,共有φ(n)個(gè)數(shù))

我們考慮這么一些數(shù):

m1=ax1;m2=ax2;m3=ax3……mφ(n)=axφ(n)

1)這些數(shù)中的任意兩個(gè)都不模n同余,因?yàn)槿绻衜S≡mR (mod n) (這里假定mS更大一些),就有:

mS-mR=a(xS-xR)=qn,即n能整除a(xS-xR)。但是a與n互質(zhì),a與n的最大公因子是1,而xS-xR<n,因而左式不可能被n整除。也就是說這些數(shù)中的任意兩個(gè)都不模n同余,φ(n)個(gè)數(shù)有φ(n)種余數(shù)。

2)這些數(shù)除n的余數(shù)都與n互質(zhì),因?yàn)槿绻鄶?shù)與n有公因子r,那么axi=pn+qr=r(……),axi與n不互質(zhì),而這是不可能的。(因?yàn)閍xi=pn+qr=r(……),說明axi含有因子r,又因?yàn)榍懊婕僭O(shè)n含有因子r,所以axi和n含有公因子r,因此axi與n不互質(zhì))那么這些數(shù)除n的余數(shù),都在x1,x2,x3……xφ(n)中,因?yàn)檫@是1~n中與n互質(zhì)的所有數(shù),而余數(shù)又小于n.

由1)和2)可知,數(shù)m1,m2,m3……mφ(n)(如果將其次序重新排列)必須相應(yīng)地同余于x1,x2,x3……xφ(n).

故得出:m1m2m3……mφ(n)≡x1x2x3……xφ(n) (mod n)

或者說a[1](x1x2x3……xφ(n))≡x1x2*x3……xφ(n)(mod n)

或者為了方便:K{a[2]-1}≡0 ( mod n ) 這里K=x1x2x3……xφ(n)。

可知K{a[3]-1}被n整除。但K中的因子x1,x2……都與n互質(zhì),所以K與n互質(zhì)。那么a[4]-1必須能被n整除,即a[5]-1≡0 (mod n),即a[6]≡1 (mod n),得證。

歐拉定理的推論

歐拉定理能干什么呢?

比如,簡(jiǎn)化冪的模運(yùn)算。

例題:計(jì)算(7^{222})的個(gè)位數(shù)。(也就是計(jì)算(7^{222}mod\,\,10))。

那么,根據(jù)歐拉定理,(a^{phi(p)}equiv1\,\,\,(mod\,\,p)),我們可以有以下的推導(dǎo):

首先,因?yàn)?7,10)互質(zhì),且(phi (10)=4),所以有:(7^4equiv 1\,\,\,(mod\,\,10))。

那么,根據(jù)取余的性質(zhì),因?yàn)?7^4mod\,\,10=1),所以(7^4)的(n)次冪模10還等于1.

那么就可以有:

(7^{222}=7^{4 imes55+2}),把1全部約去,得到:

(7^2equiv7^{222}\,\,\,(mod\,\,10))

這樣就簡(jiǎn)單多了。

所以我們得出了這樣的一個(gè)結(jié)論:

[a^n\,\,mod\,\,p=a^{n\%phi(p)}\,\,mod\,\,p
]

也就是說:

[a^nequiv a^{n\%phi(p)}\,\,\,(mod\,\,p)
]

這個(gè)結(jié)論也叫做:歐拉定理的推論,極其重要。

對(duì)于線性計(jì)算的式子(這里指四則基本運(yùn)算中除了除法之外的三種運(yùn)算),如果要求我們對(duì)于(a+b,a-b,a imes b)的結(jié)果取模,那么我們完全可以在進(jìn)行運(yùn)算之前先對(duì)(a,b)取模,對(duì)結(jié)果不會(huì)造成任何影響。

但是如果要求我們對(duì)(a^b)這樣的式子取模呢?

這就用到了歐拉定理的推論:我們可以把底數(shù)對(duì)(p)取模(這個(gè)操作的正確性就是由前面說的四則混合運(yùn)算的正確性推導(dǎo)出來的,別忘了乘方運(yùn)算的實(shí)質(zhì)是一堆連乘)。指數(shù)對(duì)(phi(p))取模,再進(jìn)行運(yùn)算即可(快速冪走起)。

求乘法逆元

乘法逆元的概念

其實(shí)是一個(gè)介紹定義的過程:

如果(axequiv1\,\,\,(mod\,\,p)),并且(a,p)互質(zhì),則稱(a)關(guān)于模(p)的乘法逆元為(x)。

還是比較容易記住的。

乘法逆元的求解

舉個(gè)例子:

如果需要我們求解(4)關(guān)于模(7)的乘法逆元。那么也就是說,對(duì)于這個(gè)需要去求解的乘法逆元(x),我們只需要找到一個(gè)(k),使得下式成立:

[4x=7k+1
]

(這個(gè)式子是由于乘法逆元的定義:(4xequiv 1\,\,\,(mod\,\,7))以及同余的定義得到的)。

關(guān)于乘法逆元的求解,我們首先要對(duì)其進(jìn)行分類。

首先,我們需要明白的是,對(duì)于(a)關(guān)于模(p)的乘法逆元的求解,只有在(a,p)互質(zhì)的時(shí)候才有解,否則就是無解。這不僅是定義規(guī)定的,更是滿足大前提的首要條件(大家只需要牢牢記住就好)。

那么,現(xiàn)在,(a,p)已經(jīng)互質(zhì)了。那么又有兩種情況:模數(shù)(p)是否為素?cái)?shù)。

假如(p)為素?cái)?shù)。那么我們可以使用費(fèi)馬小定理來求解乘法逆元。

根據(jù)費(fèi)馬小定理,有:(a^{p-1}equiv1\,\,\,(mod\,\,p)),那么結(jié)合乘法逆元的定義,如果(a,p)互質(zhì),那么原式可以拆成(a imes a^{p-2}equiv1\,\,\,(mod\,\,p))。也就是說,這個(gè)時(shí)候的乘法逆元就是(a^{p-2})。

假如(p)不是素?cái)?shù),就需要我們使用擴(kuò)展歐幾里得算法求解,對(duì)于擴(kuò)展GCD還有不明白的小伙伴,請(qǐng)移步本蒟蒻的這篇博客:

淺談擴(kuò)展GCD

對(duì)于擴(kuò)展歐幾里得算法,我們知道它可以被用于求解同余方程。

那么就和乘法逆元的求解很匹配了,因?yàn)槌朔嬖那蠼獗举|(zhì)上就是在求解這么一個(gè)同余方程:

[axequiv 1\,\,\,(mod\,\,p)
]

但是,擴(kuò)展GCD解決的是形如(ax+by=gcd(a,b))的東西,和這個(gè)同余式子有什么關(guān)系呢?

如果像我一開始一樣不太會(huì)變通的話,請(qǐng)看下面的證明過程。

最裸最裸,我們會(huì)求解形如:(ax+by=gcd(a,b)),這樣的方程。

那么,我們只需要把這個(gè)(axequiv1\,\,\,(mod\,\,p))轉(zhuǎn)換成這樣的形式進(jìn)行求解即可。

假設(shè)我們可以把這個(gè)同余方程轉(zhuǎn)換成(ax+by=gcd(a,b))的形式,那么當(dāng)(a,b)互質(zhì)時(shí),(gcd(a,b)=1),咦?我們發(fā)現(xiàn)這個(gè)東西和乘法逆元的定義:(a,p)互質(zhì)好像啊!那就讓(b=p)吧!

那么,有(ax+by=1)。

兩側(cè)同時(shí)對(duì)(b)取模(因?yàn)檫@個(gè)時(shí)候(b=p)了),有(ax\%b+by\%b=1\%b=1)。

因?yàn)?by\%b=0),所以原式就變成了:

(axequiv1\,\,\,(mod\,\,p)),得證。

也就是說,如果要求一個(gè)數(shù)(a)關(guān)于(p)的乘法逆元,直接向擴(kuò)展GCD算法的模板里傳((a,p,x,y)),最后的(x)就是我們要求的乘法逆元。

這樣的話有一道經(jīng)典裸題例題:NOIP2012同余方程

然后我們就可以求出一個(gè)數(shù)的乘法逆元

線性求逆元

其實(shí)我認(rèn)為,前面的“求一個(gè)數(shù)的逆元”的部分最終還是為這個(gè)“線性求逆元”做鋪墊(理論知識(shí)大于天嘛!)。我們?cè)趯W(xué)數(shù)論的時(shí)候可能都會(huì)發(fā)現(xiàn),我們?cè)谔骄康倪^程中都是一個(gè)“由局部到整體”的概念:由判斷一個(gè)數(shù)是否為質(zhì)數(shù)到判斷一群數(shù)是否為質(zhì)數(shù),由求一個(gè)數(shù)的約數(shù)集合到篩選一群數(shù)的約數(shù)集......同樣,在學(xué)會(huì)了求一個(gè)數(shù)的逆元之后,我們要學(xué)習(xí)線性篩逆元。

求一個(gè)數(shù)的逆元的復(fù)雜度是(O(log N))的。如果我們要求很多數(shù)的逆元的時(shí)候,如無意外它的復(fù)雜度會(huì)是(O(Nlog N))的,這顯然不符合我們的需求。所以,我們要開發(fā)一個(gè)(O(n))的線性求逆元的算法。

線性篩逆元其實(shí)是一個(gè)遞推的過程,我們?cè)谶@里著重講其遞推式的建立與證明。

首先我們有:

[1^{-1}equiv 1\,\,\,(mod\,\,p)
]

我們把(p)拆開,拆成這樣的形式:(p=k imes m+n),這是可以成立的,因?yàn)槿我庖粋€(gè)正整數(shù)都可以被拆成這樣的形式。

所以我們有:

[k imes m+nequiv 0\,\,\,(mod\,\,p)
]

(這個(gè)同余式其實(shí)表示的意義就是整除)

那么,兩邊同時(shí)除以(m,n)(即同時(shí)乘(m^{-1},n^{-1})),則有

[frac{k}{n}+frac{1}{m}equiv0\,\,\,(mod\,\,p)
]

移項(xiàng)有:

[frac{1}{m}equiv-frac{k}{n}\,\,\,(mod\,\,p)
]

因?yàn)?k)就是(lfloorfrac{p}{m}floor),(n)就是(p\,\,\,mod\,\,\,m),所以原式就變成了:

[m^{-1}equiv-lfloorfrac{p}{m}floor imes(p\,\,\,mod\,\,\,m)^{-1}\,\,\,(mod\,\,p)
]

根據(jù)乘法逆元的定義,對(duì)于一對(duì)互質(zhì)的數(shù)(a,p),有它的一個(gè)乘法逆元(x)滿足:(axequiv1\,\,\,(mod\,\,p)),那么(xequiv a^{-1}\,\,\,(mod\,\,p)),那么,根據(jù)上面的這個(gè)式子,我們就求出了數(shù)(m)關(guān)于模(p)意義下的逆元。

遞推式如下(用(inv[i])數(shù)組表示一個(gè)數(shù)的逆元):

[inv[i]=-(p/i) imes inv[p\%i]
]

為了不讓乘法逆元出現(xiàn)一堆負(fù)數(shù),我們需要對(duì)這個(gè)遞推式稍做處理:

[inv[i]=((p-p/i)*inv[p\%i])\%p
]

如果能看明白并且記住這個(gè)證明過程的話當(dāng)然是極好的,如果看不明白,直接記結(jié)論也是完全可以的,但是,請(qǐng)做好考場(chǎng)上秒忘自己又一點(diǎn)不會(huì)推的準(zhǔn)備(別怪我沒告訴你)。

乘法逆元解決除法取模問題

一般來講,毒瘤出題人不會(huì)單獨(dú)出題考乘法逆元,它的較常用的考查方式是在組合數(shù)問題中作為除法取模的計(jì)算方式。

除法取模就是:

[a/b\,\,\,mod\,\,p
]

這個(gè)式子可以變成:

[a imes b^{p-2}\,\,mod\,\,p
]

也就是分子乘以分母的逆元再取模。


總結(jié):

這篇總結(jié)是我耗時(shí)將近一周盤完這篇博客之后的附加之作

(本來認(rèn)為乘法逆元這一塊一天就能學(xué)完,但是我好像高估了自己的能力、低估了數(shù)學(xué)的魅力(呵呵),加之快期末了,各種文化課以及個(gè)人爛事層出不窮,導(dǎo)致更博和鞏固的速度都極為地緩慢)。

本來以為學(xué)完了應(yīng)該就會(huì)了,但是在學(xué)最后的線性求逆元的過程中驚喜地發(fā)現(xiàn)前面的東西大多又不會(huì)了(結(jié)論也就差不多記住,至于推導(dǎo)過程就全部忘光光了),于是才真正領(lǐng)略了什么是數(shù)論,以及為何數(shù)論這一塊讓一些數(shù)競(jìng)大佬都由衷地感覺困難。于是又剎下心來重新看了一下,順便歸納出來了一些重點(diǎn),這樣的話,每次復(fù)習(xí)的時(shí)候就不用通篇瀏覽,只核對(duì)這些重要的知識(shí)點(diǎn)到底會(huì)不會(huì)就可以了。

那么,學(xué)完這一課,你需要會(huì)的——

1、同余的基本概念

你總不能對(duì)別人講,我學(xué)完同余了,但是連式子也看不懂...

2、費(fèi)馬小定理

結(jié)論:

[a^{p-1}equiv 1\,\,\,(mod\,\,p)
]

即:

[a^pequiv a\,\,\,(mod\,\,p)
]

這個(gè)定理的適用條件一定要記住:(p)為質(zhì)數(shù),并且(a)不為(p)的倍數(shù)。

3、歐拉定理

結(jié)論:

[a^{phi(p)}equiv 1\,\,\,(mod\,\,p)
]

它的適用條件是:(a,p)互質(zhì)。

推論:

[a^{n}equiv a^{n\%phi(p)}\,\,\,(mod\,\,p)
]

當(dāng)然,這個(gè)定理不是供人顯擺用的,知道了,還得會(huì)用:

歐拉定理的推論可以用來解決形如這樣的式子的求解的問題:

[a^n\,\,\,mod\,\,p
]

4、乘法逆元的概念

5、求單個(gè)數(shù)的乘法逆元的兩種方式

知道求單個(gè)數(shù)的乘法逆元的兩種方式及其使用條件:

對(duì)于求(axequiv 1\,\,\,(mod\,\,p))中的(x),(大前提當(dāng)然是(a,p)互質(zhì))如果:

(p)為質(zhì)數(shù),那么可以使用費(fèi)馬小定理。

(p)不為質(zhì)數(shù),那么需要使用擴(kuò)展GCD將同余式轉(zhuǎn)換成形如(ax+by=gcd(a,b))的同余方程來求解。

6、線性篩逆元

結(jié)論(遞推式):

[inv[i]=((p-p/i) imes inv[p\%i])\%p
]

7、乘法逆元求解除法取模問題

知道形如(a/b\,\,mod\,\,p)可以變成(a imes b^{p-2}\,\,mod\,\,p)。


φ(n) ↩?

φ(n) ↩?

φ(n) ↩?

φ(n) ↩?

φ(n) ↩?

φ(n) ↩?

總結(jié)

以上是生活随笔為你收集整理的同余知识点全析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。