同余 模算術 中國剩余定理
相關知識點:
1、a≡b(modc)。a,b關於模c同余 ,即a modc=b mod c 。 等價於a%c=b
2、假設a,b互質(a,b)=1,則可得a關於模b的逆 ax≡1(modb)
3、關於余數的定理:
定理1 :假設被除數加上(或減去)除數的整數倍,除數不變,則余數不變。
(余數和被除數關於除數同余)
4.中國剩余定理:
設m1,m2,...,mk是兩兩互素的正整數,對於隨意的正整數a1,a2,a3,..,ak證明:令Mi=M/mi ,則Mi和mi互質,則(Mi,mi)=1,即 MiPi≡1(mod mi), ——模逆
等價於MiPi %mi=1,要使 MiPi%mi=ai。僅僅要將被除數乘以a1(
算法模板:
int m[maxn],a[maxn]; void exgcd(int a,int b,int &d,int &x,int &y) { if(!b) d=a,x=1,y=0; else exgcd(b,a%b,d,y,x),y-=x*(a/b); } intChina(int r) { int M,d,x0,y0,ans=0; for(int i=1;i<=r;i++){ M*=m[i]; } for(int i=1;i<=r;i++){ int Mi=M/m[i]; exgcd(Mi,m[i],d,x0,y0); ans=(ans+Mi*x0*a[i])%M; } if(ans<0) ans+=M; return ans; }
———————————————————————切割線——————————————————————————— 下面來自轉載。有助於理解中國剩余定理的證明(拿著學長的書慢慢啃數論吧。。
。)
公元前後的《孫子算經》中有“物不知數”問題:“今有物不知其數,三三數之余二 。五五數之余三 ,七七數之余二,問物幾何?”答為“23”。 --------這個就是傳說中的“中國剩余定理”。
事實上題目的意思就是,x%3=2,x%5=3,x%7=2;問x最小是多少?
解法:
1.首先找到3,5。7,的三個“關鍵數字”,即[5,7]=35;[3,7]=21;[3,5]=15
2.讓35a%3=1,a=2; 讓21b%5=1,b=1; 讓15c%7=1,c=1(我們這裏要讓余數為1。是為了要求余數2的話。僅僅要乘以2就能夠,要求余數為3的話。僅僅要乘以3就能夠了。……)
3.所以 然後。35*2*2=140 21*1*3=63 15*1*2=30
4. Then 140+63+30=233 ,由於233>3*5*7 , 所以233- 105*2=23
上幾個百度上的例題(我們會發現給出的除數都是亮亮互質的,顯然……):
例1:一個數被3除余1,被4除余2,被5除余4。這個數最小是幾?
題中3、4、5三個數兩兩互質。則〔4,5〕=20;〔3。5〕=15;〔3,4〕=12;〔3,4。5〕=60。為了使20被3除余1,用20×2=40。使15被4除余1。用15×3=45。使12被5除余1,用12×3=36。然後,40×1+45×2+36×4=274,由於,274>60。所以,274-60×4=34,就是所求的數。
例2:一個數被3除余2。被7除余4。被8除余5。這個數最小是幾?
題中3、7、8三個數兩兩互質。則〔7。8〕=56;〔3,8〕=24。〔3,7〕=21;〔3,7,8〕=168。為了使56被3除余1,用56×2=112。使24被7除余1,用24×5=120。
使21被8除余1,用21×5=105。然後,112×2+120×4+105×5=1229,由於,1229>168。所以,1229-168×7=53。就是所求的數。
例3:一個數除以5余4,除以8余3,除以11余2,求滿足條件的最小的自然數。
題中5、8、11三個數兩兩互質。則〔8。11〕=88;〔5,11〕=55。〔5。8〕=40;〔5,8。11〕=440。
為了使88被5除余1,用88×2=176;使55被8除余1。用55×7=385。使40被11除余1。用40×8=320。
然後。176×4+385×3+320×2=2499,由於,2499>440,所以,2499-440×5=299,就是所求的數。
同余 模算術 中國剩余定理