打死没想到会在H老师处学懂数论

  • 同余,整除
  • 模运算
  • 埃式筛法
  • 欧拉筛法
  • 最大公约数和最小公倍数
  • 辗转相除法
  • 更相减损术
  • 裴蜀定理
  • 威尔逊定理
  • 费马定理
  • 同余等价类、剩余系、缩系
  • 欧拉函数
  • 欧拉定理
  • 扩展欧拉定理
  • 区间逆元
  • 扩展欧几里得
  • 中国剩余定理
  • 扩展中国剩余定理
  • 利用以上所有知识进行证明

同余,整除

整除的性质:

  • 传递性:若a∣b,b∣ca|b,b|ca∣b,b∣c,则a∣ca|ca∣c
  • a∣b,a∣ca|b,a|ca∣b,a∣c等价于对于任意的整数x,yx,yx,y,有a∣(bx+cy)a|(bx+cy)a∣(bx+cy)
  • 设m≠0m≠0m​=0,则a∣ba|ba∣b等价于ma∣mbma|mbma∣mb
  • 设整数x,yx,yx,y满足ax+by=1,a∣n,b∣,nax+by=1,a|n,b|,nax+by=1,a∣n,b∣,n,则(ab)∣n(ab)|n(ab)∣n
  • 若b=q∗d+cb=q*d+cb=q∗d+c,则d∣bd|bd∣b的充要条件是d∣cd|cd∣c

同余的性质:

  • 同加性:若a≡b(modp)a\equiv b(mod\ p)a≡b(mod p),则a+c≡b+c(modp)a+c\equiv b+c(mod\ p)a+c≡b+c(mod p)
  • 同减性:若a≡b(modp)a\equiv b(mod\ p)a≡b(mod p),则a−c≡b−c(modp)a-c\equiv b-c(mod\ p)a−c≡b−c(mod p)
  • 同乘性:若a≡b(modp)a\equiv b(mod\ p)a≡b(mod p),则a×c≡b×c(modp)a\times c\equiv b\times c(mod\ p)a×c≡b×c(mod p)
  • 同除性:若a≡b(modp),c∣a,c∣b,(c,p)=1a\equiv b(mod\ p),c|a,c|b,(c,p)=1a≡b(mod p),c∣a,c∣b,(c,p)=1,则a/c≡b/c(modp)a/c\equiv b/c(mod\ p)a/c≡b/c(mod p)
  • 同幂性:若a≡b(modp),c>0a\equiv b(mod\ p),c>0a≡b(mod p),c>0,则ac≡bc(modp)a^c\equiv b^c(mod\ p)ac≡bc(mod p)
  • 若a%p=x,a%q=x,(p,q)=1a\% p=x,a\% q=x,(p,q)=1a%p=x,a%q=x,(p,q)=1,则a%(p∗q)=xa\% (p*q)=xa%(p∗q)=x

数论常识:

  • 若2能整除a的最末位,则2∣a2|a2∣a
  • 若4能整除a的末两位,则4∣a4|a4∣a
  • 若8能整除a的末三位,则8∣a8|a8∣a
  • 若3能整除a的各位数字之和,则3∣a3|a3∣a
  • 若9能整除a的各位数字之和,则9∣a9|a9∣a
  • 若11能整除a的偶数位数字之和与奇数位数字之和的差,则11∣a11|a11∣a
  • 能被7,11,137,11,137,11,13整除的数的特征是:这个数的末三位与末三位以前的数字所组成数之差能被7,11,137,11,137,11,13整除

模运算

1.分配率

  • (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
  • (a×b)%c=(a%c×b%c)%c(a\times b)\% c=(a\% c\times b\% c)\% c(a×b)%c=(a%c×b%c)%c
  • (ab)%c=(a%c)b%c(a^b)\% c=(a\% c)^b\% c(ab)%c=(a%c)b%c

2.放缩性

  • 如果a%b=c,d≠0a\% b=c,d≠0a%b=c,d​=0,则有(a×d)%(b×d)=c×d(a\times d)\%(b\times d)=c\times d(a×d)%(b×d)=c×d
  • 如果a%b=c,d∣a,d∣ba\%b=c,d\bigg|a,d\bigg|ba%b=c,d∣∣∣∣​a,d∣∣∣∣​b,则(a/d)%(b/d)=(c/d)(a/d)\%(b/d)=(c/d)(a/d)%(b/d)=(c/d)

根据放缩性,则除法取余有式子 a/b%c=a%(b×c)/ba/b\%c=a\%(b\times c)/ba/b%c=a%(b×c)/b


埃式筛法

先把nnn以内的222的倍数(不包含222)全部删除,再把nnn以内的333的倍数(不包含333)全部删除,…

这样做下去,最后剩下的以内的数全为质数

这里的删除其实不是真的删除,只是打上一个删除标记而已

每个数都会被它的质因子打一次标记,而一个数的不同的质因子个数不超过logNlogNlogN

所以时间复杂度为O(NlogN)O(NlogN)O(NlogN)

void getprime( int n ) {for( int i = 2;i <= n;i ++ ) {if( flag[i] ) continue;prime[++ cnt] = i;for( int j = i;j <= n / i;j ++ )flag[j * i] = 1;}
}

欧拉筛法

在上述的埃氏筛法中,一个数可能被它的各个质因子都筛了一遍

而一个数的质因子种类数是不会超过logNlogNlogN的,所以时间复杂度为O(NlogN)O(NlogN)O(NlogN)

而欧式筛法保证每个数只被它的最小质因子筛一遍,这样,时间复杂度便降成了O(N)O(N)O(N)


有一个质数集合SSS,一开始,质数集合为空

同时有一个boolboolbool数组flagflagflag,表示删除标记

有两层循环:

外层循环从222开始枚举倍数,设当前枚举的量为aaa

如果aaa是质数,则将aaa加入质数集合

内层循环枚举质数集合中的元素,将数组中它们的aaa倍全部打上删除标记

显然,未打删除标记的数都是质数了(flagflagflag数组中下标小于222的元素是无效的,不用考虑)

但现在的时间复杂度仍然是O(NlogN)O(NlogN)O(NlogN)的,接下来,要用一个优化来完成O(N)O(N)O(N)的蜕变

设当前倍数为aaa,在内层循环中,设当前枚举到集合SSS中的第iii个质数pip_ipi​

先将i∗pii*p_ii∗pi​打上标记

如发现iii是pip_ipi​的倍数时

此时后续的质数就无需再枚举了,可以提前退出内层循环

外层循环处理下一轮,即a++a++a++


为什么满足这种条件就可以提前breakbreakbreak呢?

设后续的质数为pi′p_i'pi′​,而pi′>pip_i'>p_ipi′​>pi​

因为aaa是pip_ipi​的倍数,那么a×pi′a\times p_i'a×pi′​也是pip_ipi​的倍数

设a×pi′=b×pia\times p_i'=b\times p_ia×pi′​=b×pi​

∵pi′>pi∵p_i'>p_i∵pi′​>pi​

∴b>a∴b>a∴b>a

我们希望每个数被它的最小质因子给删掉

所以a×pi′a\times p_i'a×pi′​应该被pip_ipi​删掉(就要求a×pi′/pia\times p_i'/p_ia×pi′​/pi​尽量大)

所以后续所有的质数就都留给倍数aaa增长到bbb再去处理了


void sieve( int n ) {for( int i = 2;i <= n;i ++ ) {if( ! flag[i] ) prime[++ cnt] = i;for( int j = 1;j <= cnt && i * prime[j] <= n;j ++ ) {flag[i * prime[j]] = 1;if( i % prime[j] == 0 ) break;}}
}

最大公约数和最小公倍数

gcd(a,b)×lcm(a,b)=a∗bgcd(a,b)\times lcm(a,b)=a*bgcd(a,b)×lcm(a,b)=a∗b

证明:
将a,ba,ba,b进行质因子分解,设a,ba,ba,b的质因子集合并集为p1,p2,p3...pkp_1,p_2,p_3...p_kp1​,p2​,p3​...pk​
设a=p1i1p2i2...pkik,(0≤i1,0≤i2...0≤ik)设a=p_1^{i_1}p_2^{i_2}...p_k^{i_k},(0≤i_1,0\le i_2...0\le i_k)设a=p1i1​​p2i2​​...pkik​​,(0≤i1​,0≤i2​...0≤ik​)
设b=p1j1p2j2...pkjk,(0≤j1,0≤j2...0≤jk)设b=p_1^{j_1}p_2^{j_2}...p_k^{j_k},(0\le j_1,0\le j_2...0\le j_k)设b=p1j1​​p2j2​​...pkjk​​,(0≤j1​,0≤j2​...0≤jk​)
gcd(a,b)=p1min(i1,j1)p2min(i2,j2)...pkmin(ik,jk)gcd(a,b)=p_1^{min(i_1,j_1)}p_2^{min(i_2,j_2)}...p_k^{min(i_k,j_k)}gcd(a,b)=p1min(i1​,j1​)​p2min(i2​,j2​)​...pkmin(ik​,jk​)​
lcm(a,b)=p1max(i1,j1)p2max(i2,j2)...pkmax(ik,jk)lcm(a,b)=p_1^{max(i_1,j_1)}p_2^{max(i_2,j_2)}...p_k^{max(i_k,j_k)}lcm(a,b)=p1max(i1​,j1​)​p2max(i2​,j2​)​...pkmax(ik​,jk​)​
∵min(it,jt)+max(it,jt)=it+jt∵min(i_t,j_t)+max(i_t,j_t)=i_t+j_t∵min(it​,jt​)+max(it​,jt​)=it​+jt​
∴gcd(a,b)+lcm(a,b)=p1i1+j1p2i2+j2...pkik+jk∴gcd(a,b)+lcm(a,b)=p_1^{i_1+j_1}p_2^{i_2+j_2}...p_k^{i_k+j_k}∴gcd(a,b)+lcm(a,b)=p1i1​+j1​​p2i2​+j2​​...pkik​+jk​​


辗转相除法

gcd(a,b)≡gcd(b,a%b)gcd(a,b)\equiv gcd(b,a\%b)gcd(a,b)≡gcd(b,a%b)

证明:
设d=gcd(a,b),a=x∗d,b=y∗dd=gcd(a,b),a=x*d,b=y*dd=gcd(a,b),a=x∗d,b=y∗d

根据模运算的放缩性有:a%b=(x∗d)%(y∗d)=(x%y)∗da\%b=(x*d)\%(y*d)=(x\%y)*da%b=(x∗d)%(y∗d)=(x%y)∗d

∵(x,y)=1∵(x,y)=1∵(x,y)=1

∴(y,x%y)=1∴(y,x\%y)=1∴(y,x%y)=1

int gcd( int x, int y ) {if( ! y ) return x;else return gcd( y, x % y );
}

时间复杂度O(log⁡)O(\log)O(log),最坏情况就是斐波拉契数列,相当于相邻两位一位一位移动(辗转相减)

辗转相减法:

gcd(a,b)=gcd(b,a−b),a>bgcd(a,b)=gcd(b,a-b),a>bgcd(a,b)=gcd(b,a−b),a>b

证明:

令a=Ad,b=Bd,(A,B)=1→(a,b)=da=Ad,b=Bd,(A,B)=1\rightarrow (a,b)=da=Ad,b=Bd,(A,B)=1→(a,b)=d

则a−b=(A−B)da-b=(A-B)da−b=(A−B)d

若gcd(b,a−b)=gcd(Bd,(A−B)d)≠dgcd(b,a-b)=gcd\bigg(Bd,(A-B)d\bigg)≠dgcd(b,a−b)=gcd(Bd,(A−B)d)​=d

说明gcd(B,A−B)>1gcd(B,A-B)>1gcd(B,A−B)>1

令gcd(B,A−B)=g,B=sg,A−B=tggcd(B,A-B)=g,B=sg,A-B=tggcd(B,A−B)=g,B=sg,A−B=tg

则一定有g∣Ag\bigg|Ag∣∣∣∣​A

与(A,B)=1(A,B)=1(A,B)=1矛盾,所以gcd(B,A−B)=1gcd(B,A-B)=1gcd(B,A−B)=1


更相减损术

若约分ab\frac{a}{b}ba​
如a,ba,ba,b均为偶,可先将a,ba,ba,b折半,即/2/2/2
否则,将a,ba,ba,b交替的减去对方
直到最后两数相等,此时的数乘上先前除掉的222即为原来a,ba,ba,b的最大公约数


裴蜀定理

如果a,ba,ba,b的最大公约数为ddd,且d∣cd\bigg|cd∣∣∣∣​c,则存在整数x,yx,yx,y,使得ax+by=cax+by=cax+by=c

证明:

转化证明存在x,yx,yx,y使得ax+by=dax+by=dax+by=d

假设存在这样一对x,yx,yx,y,那么只需将其进行倍数放缩即可

∵(a,b)=d∵(a,b)=d∵(a,b)=d

∴∴∴设a′=a/d,b′=b/da'=a/d,b'=b/da′=a/d,b′=b/d

则有a′x+b′y=1,(a′,b′)=1a'x+b'y=1,(a',b')=1a′x+b′y=1,(a′,b′)=1

证明转化为 求一对x,yx,yx,y,使得a′x+b′y=1a'x+b'y=1a′x+b′y=1,且满足(a′,b′)=1(a',b')=1(a′,b′)=1

即求证a′x%b′=1a'x\%b'=1a′x%b′=1(感性理解:若干倍的a′a'a′减去若干倍的b′b'b′等于111)


引理一

如果a,ba,ba,b为正整数,且a,ba,ba,b互质,则不存在小于bbb的正整数kkk,使得0≡k∗a(modb)0\equiv k*a(mod\ b)0≡k∗a(mod b)

证明:

用反证法即可,假设存在这样的一个kkk使得该式成立

则需满足kkk或者aaa能整除bbb

∵(a,b)=1∵(a,b)=1∵(a,b)=1

∴a∴a∴a不可能整除bbb

∵0<k<b∵0<k<b∵0<k<b

∴k∴k∴k亦不可能整除bbb


推论

如果a,ba,ba,b为正整数,且a,ba,ba,b互质,则0,a,a∗2,a∗3...(b−1)∗a0,a,a*2,a*3...(b-1)*a0,a,a∗2,a∗3...(b−1)∗a这些数取模bbb,余数互不相等

证明:

反证法

设存在0<i<j<b0<i<j<b0<i<j<b,使得a∗i≡a∗j(modb)a*i\equiv a*j(mod\ b)a∗i≡a∗j(mod b)

则有(i−j)∗a≡0(modb)(i-j)*a\equiv 0(mod\ b)(i−j)∗a≡0(mod b)

同理引理一,i−j,ai-j,ai−j,a都不可能整除bbb,故与假设矛盾,不成立


引理二

如果(a,b)=1(a,b)=1(a,b)=1,则必存在一个整数kkk,满足k∗a%b=1k*a\% b=1k∗a%b=1

证明:

根据上面推论易知,这些数取模bbb的值只会在区间[0,b−1][0,b-1][0,b−1](k=0k=0k=0时取模余数为000)

而且各不相同,其中一定存在取模后的余数为111的值


根据引理二可知, 如果(a,b)=1(a,b)=1(a,b)=1,则必存在一个整数kkk,满足k∗a%b=1k*a\% b=1k∗a%b=1

即k∗a−p∗b=1k*a-p*b=1k∗a−p∗b=1,裴蜀定理得证


威尔逊定理

(p−1)!≡−1(modp)(p-1)!\equiv -1(mod\ p)(p−1)!≡−1(mod p),当且仅当ppp为质数

证明:

先证充分性→p\rightarrow p→p为质数,有(p−1)!≡p−1(modp)(p-1)!\equiv p-1(mod\ p)(p−1)!≡p−1(mod p)

假设0<i<p0<i<p0<i<p,根据上面的裴蜀定理,可得(i,p)=1(i,p)=1(i,p)=1,且必存在一个整数j(0<j<p)j(0<j<p)j(0<j<p)

使得i×j%p=1i\times j\%p=1i×j%p=1,即jjj是iii的逆元,由此可见逆元具有唯一性,相互性

所以在[1,p−1][1,p-1][1,p−1]中逆元是一对一对的

然而……也有可能存在iii的逆元是本身的,那么此时的iii就要满足以下条件

i2%p=1⇒(i+1)(i−1)%p=0i^2\%p=1\Rightarrow (i+1)(i-1)\%p=0i2%p=1⇒(i+1)(i−1)%p=0

∴i+1=0∴i+1=0∴i+1=0或ppp,i−1=0i-1=0i−1=0或ppp

∵0<i<p∵0<i<p∵0<i<p

∴i+1=p,i−1=0∴i+1=p,i-1=0∴i+1=p,i−1=0

即i=p−1,1i=p-1,1i=p−1,1

每一对逆元取模ppp都为111,需要证明的原式变成1∗p−1≡p−1(modp)1*p-1\equiv p-1(mod\ p)1∗p−1≡p−1(mod p)

显然成立,证毕


再证必要性→(p−1)!≡p−1(modp)\rightarrow (p-1)!\equiv p-1(mod\ p)→(p−1)!≡p−1(mod p),当该式成立时,ppp一定为质数

反证法,即证明ppp不为质数时,该式不成立

如ppp不为质数,则[2,p−1][2,p-1][2,p−1]中一定有ppp的因子,设为iii,则i,p/ii,p/ii,p/i均为ppp的因子

  • 若i≠p/ii≠p/ii​=p/i,则1×2×3×...×(p−1)1\times 2\times 3\times ...\times (p-1)1×2×3×...×(p−1)一定是ppp的倍数,取模ppp为000

  • 若i=p/ii=p/ii=p/i,则1×2×3×...×(p−1)1\times 2\times 3\times ...\times (p-1)1×2×3×...×(p−1)一定是iii的倍数,模ppp必为iii的倍数

    又因为ppp是iii的倍数,且i>1i>1i>1,所以p−1p-1p−1不可能是iii的倍数,所以(p−1)!≡−1(modp)(p-1)!\equiv-1(mod\ p)(p−1)!≡−1(mod p)


费马定理

如果ppp为质数,且a%p≠0a\%p≠0a%p​=0,则有ap−1%p=1a^{p-1}\%p=1ap−1%p=1

证明:
(a∗1)∗(a∗2)∗...∗(a∗(p−1))=ap−1∗(p−1)!(modp)(a*1)* (a* 2)* ...*(a* (p-1))=a^{p-1}*(p-1)!\ \ (mod\ p)(a∗1)∗(a∗2)∗...∗(a∗(p−1))=ap−1∗(p−1)!  (mod p)
∵(a,p)=1∵(a,p)=1∵(a,p)=1
∴{(a∗1)%p,(a∗2)%p,...,(a∗(p−1))%p}={1,p−1}∴\{(a* 1)\% p,(a*2)\% p,...,(a*(p-1))\%p\}=\{1,p-1\}∴{(a∗1)%p,(a∗2)%p,...,(a∗(p−1))%p}={1,p−1}
即取模后的值互不相等,且∈[1,p−1]∈[1,p-1]∈[1,p−1]
∴(a∗1)%p,(a∗2)%p,...,(a∗(p−1))%p=(p−1)!(modp)∴(a*1)\% p,(a*2)\% p,...,(a*(p-1))\%p=(p-1)!\ \ (mod\ p)∴(a∗1)%p,(a∗2)%p,...,(a∗(p−1))%p=(p−1)!  (mod p)
(p−1)!=ap−1(p−1)!(modp)(p-1)!=a^{p-1}(p-1)!\ \ (mod\ p)(p−1)!=ap−1(p−1)!  (mod p)
∴ap−1=1(modp)∴a^{p-1}=1\ \ (mod\ p)∴ap−1=1  (mod p)


同余等价类、剩余系、缩系

对于一个正整数ppp,所有非负整数模ppp的结果,只有ppp种可能,即{0,1,2,...,p−1}\{0,1,2,...,p-1\}{0,1,2,...,p−1}
模ppp的剩余系指的是{0,1,2,...,p−1}\{0,1,2,...,p-1\}{0,1,2,...,p−1},即小于ppp的所有非负整数,这个集合中包含了所有模ppp的余数
模ppp的剩余系记为ZpZ_pZp​

剩余系中,每一个元素代表的是一类数
比如在剩余系ZpZ_pZp​中

  • 000表示的是所有模ppp为000的数,即{0,p,2p,3p...}\{0,p,2p,3p...\}{0,p,2p,3p...}
  • 111表示的是所有模ppp为111的数,即{1,p+1,2p+1,3p+1...}\{1,p+1,2p+1,3p+1...\}{1,p+1,2p+1,3p+1...}

这些模ppp余数相同的数,称为同余等价类
可以发现,在模意义下,所有的非负整数可以被分为若干同余等价类

如果我们只考虑剩余系中与模数p互质的数,便得到一个子集,称为模p的缩系,记为Zp∗Z_p^*Zp∗​
如ppp为666,则Zp∗={1,5}Z_p^*=\{1,5\}Zp∗​={1,5}
缩系又称为简化剩余系


欧拉函数

欧拉函数即为缩系的大小

ϕ(1)=1\phi(1)=1ϕ(1)=1

  • 如果nnn为质数,则ϕ(n)=n−1\phi(n)=n-1ϕ(n)=n−1
  • 如果n=apn=a^pn=ap,且aaa为质数,则ϕ(n)=ap−ap−1=ap(1−1a)\phi(n)=a^p-a^{p-1}=a^p(1-\frac{1}{a})ϕ(n)=ap−ap−1=ap(1−a1​)
  • 令n=a1p1a2p2...akpkn=a_1^{p_1}a_2^{p_2}...a_k^{p_k}n=a1p1​​a2p2​​...akpk​​,根据积性函数性质
    ϕ(n)=ϕ(a1p1)ϕ(a2p2)...ϕ(akpk)=a1p1(1−1a1)∗a2p2(1−1a2)...akpk(1−1ak)\phi(n)=\phi(a_1^{p_1})\phi(a_2^{p_2})...\phi(a_k^{p_k})=a_1^{p_1}(1-\frac{1}{a_1})*a_2^{p_2}(1-\frac{1}{a_2})...a_k^{p_k}(1-\frac{1}{a_k})ϕ(n)=ϕ(a1p1​​)ϕ(a2p2​​)...ϕ(akpk​​)=a1p1​​(1−a1​1​)∗a2p2​​(1−a2​1​)...akpk​​(1−ak​1​)
    =n∗(1−1a1)∗(1−1a2)∗...∗(1−1ak)=n*(1-\frac{1}{a_1})*(1-\frac{1}{a_2})*...*(1-\frac{1}{a_k})=n∗(1−a1​1​)∗(1−a2​1​)∗...∗(1−ak​1​)

∑d∣nϕ(d)=n\sum_{d\big|n}\phi(d)=nd∣∣​n∑​ϕ(d)=n

考虑用分数形式证明

nnn个真分数:1n,2n,...,n−1n,nn\frac{1}{n},\frac{2}{n},...,\frac{n-1}{n},\frac{n}{n}n1​,n2​,...,nn−1​,nn​

然后进行分数化简,按分母不同分类

分母一定是nnn的因数,且分母分子互质,并且真分数形式的分子小于分母

那么该类分数个数就是分母的ϕ\phiϕ,得证

小于nnn且与nnn互质的所有正整数之和为nϕ(n)2\frac{n\phi(n)}{2}2nϕ(n)​

证明:
设s={a1,a2,...,ak}s=\{a_1,a_2,...,a_k\}s={a1​,a2​,...,ak​}是在模nnn意义下的缩系,根据缩系定义,个数就是ϕ(n)\phi(n)ϕ(n)

则t={n−a1,n−a2,...,n−ak}t=\{n-a_1,n-a_2,...,n-a_k\}t={n−a1​,n−a2​,...,n−ak​}也是模nnn意义下的缩系(详见辗转相除法的辗转相减)

两个集合相加,证毕

//求单个phi(n)
int getphi( int x ) {int ans = x;for( int i = 2;i * i <= x;i ++ ) {if( x % i == 0 ) {ans = ans / i * ( i - 1 );while( x % i == 0 ) x /= i;}}if( x > 1 ) ans = ans / x * ( x - 1 );return ans;
}
//求多个phi(n)
void getphi( int n ) {for( int i = 2;i <= n;i ++ ) {if( ! phi[i] ) {phi[i] = i - 1;for( int j = i << 1;j <= n;j += i ) {if( ! phi[j] ) phi[j] = j;phi[j] = phi[j] / i * ( i - 1 );}}}
}

欧拉定理

如果(a,p)=1(a,p)=1(a,p)=1,则aϕ(p)≡1(modp)a^{\phi(p)}\equiv1(mod\ p)aϕ(p)≡1(mod p)

证明:

设ppp的简化剩余系为{p1,p2,p3,...,pk}\{p_1,p_2,p_3,...,p_k\}{p1​,p2​,p3​,...,pk​}

∵(a,p)=1∵(a,p)=1∵(a,p)=1

∴{a∗p1,a∗p2,...,a∗pk}∴\{a*p_1,a*p_2,...,a*p_k\}∴{a∗p1​,a∗p2​,...,a∗pk​}也构成了ppp的简化剩余系

(证明可参考裴蜀定理中的推论反证法

∴(a∗p1)∗(a∗p2)∗...∗(a∗pk)≡p1∗p2∗...∗pk(modp)∴(a*p_1)*(a*p_2)*...*(a*p_k)\equiv p_1*p_2*...*p_k(mod\ p)∴(a∗p1​)∗(a∗p2​)∗...∗(a∗pk​)≡p1​∗p2​∗...∗pk​(mod p)

∴aϕ(p)≡1(modp)∴a^{\phi(p)}\equiv 1(mod\ p)∴aϕ(p)≡1(mod p)


扩展欧拉定理

若a,ma,ma,m为正整数,当r>ϕ(m)r>\phi(m)r>ϕ(m)时,有ar≡ar%ϕ(m)+ϕ(m)a^r\equiv a^{r\%\phi(m)+\phi(m)}ar≡ar%ϕ(m)+ϕ(m)

证明:

分类讨论

  • .如果(a,m)=1(a,m)=1(a,m)=1,则显然成立

    因为由欧拉定理得aϕ(m)≡1(modm)a^{\phi(m)}\equiv1\pmod maϕ(m)≡1(modm)

  • 若(a,m)>1(a,m)>1(a,m)>1


引理一:

如果满足
{x≡y(modm)x≡y(modn)\begin{cases}x\equiv y\ (mod\ m)\\x\equiv y\ (mod\ n)\end{cases}{x≡y (mod m)x≡y (mod n)​
则有
x≡y(modlcm(n,m))x\equiv y\ (mod\ \ lcm(n,m))x≡y (mod  lcm(n,m))

证明:
显然(x−y)(x-y)(x−y)既是mmm的倍数,又是nnn的倍数,则其必然为lcm(n,m)lcm(n,m)lcm(n,m)的倍数


引理二:

如果ppp为质数,ϕ(pq)≥q\phi(p^q)\ge qϕ(pq)≥q

证明:

给两种证明方法

法一:

以每ppp个为一个周期划分

显然(p,p−1)=1,(p2,p2−1)=1,...,(pq,pq−1)=1(p,p-1)=1,(p^2,p^2-1)=1,...,(p^q,p^q-1)=1(p,p−1)=1,(p2,p2−1)=1,...,(pq,pq−1)=1

此时光考虑一部分就已经满足ϕ(pq)=q\phi(p^q)=qϕ(pq)=q,故引理显然成立


法二:

ϕ(pq)=pq−1∗(p−1)\phi(p^q)=p^{q-1}*(p-1)ϕ(pq)=pq−1∗(p−1)

根据数学归纳法

考虑q=1,ϕ(p)>=1q=1,\phi(p)>=1q=1,ϕ(p)>=1显然成立

设q=kq=kq=k时成立,即pk−1∗(p−1)>=kp^{k-1}*(p-1)>=kpk−1∗(p−1)>=k

∵k>1∵k>1∵k>1

∴∴∴显然pk∗(p−1)>=k+1p^k*(p-1)>=k+1pk∗(p−1)>=k+1

即当q=k+1q=k+1q=k+1时,也成立


接下来继续证明扩展欧拉定理

  • 若m=pkm=p^km=pk,即mmm为质数的幂时

    ∵(a,m)>1∵(a,m)>1∵(a,m)>1

    ∴p∣a∴p\bigg|a∴p∣∣∣∣​a

    由引理二可得ϕ(pk)≥k\phi(p^k)\ge kϕ(pk)≥k,即ϕ(m)≥k\phi(m)\ge kϕ(m)≥k

    ∴r>ϕ(m)≥k∴r> \phi(m)\ge k∴r>ϕ(m)≥k

    ∴ar=x∗pr=y∗pϕ(m)=z∗pk∴a^r=x*p^r=y*p^{\phi(m)}=z*p^k∴ar=x∗pr=y∗pϕ(m)=z∗pk(从ppp的指数上抽一些下来使x→y→zx\rightarrow y\rightarrow zx→y→z)

    即m∣ar,m∣pϕ(m)m\bigg|a^r,m\bigg|p^{\phi(m)}m∣∣∣∣​ar,m∣∣∣∣​pϕ(m)

    ∴ar≡ar%ϕ(m)+ϕ(m)≡0(modm)∴a^r\equiv a^{r\%\phi(m)+\phi(m)}\equiv 0(mod\ \ m)∴ar≡ar%ϕ(m)+ϕ(m)≡0(mod  m)

  • 若m=p1k1p2k2...pnknm=p_1^{k_1}p_2^{k_2}...p_{n}^{k_n}m=p1k1​​p2k2​​...pnkn​​

    设m1=p1k1m_1=p_1^{k_1}m1​=p1k1​​,则ar≡ar%ϕ(m1)+ϕ(m1)(modm1)a^r\equiv a^{r\%\phi(m_1)+\phi(m_1)}\ \ (mod\ \ m_1)ar≡ar%ϕ(m1​)+ϕ(m1​)  (mod  m1​)

    设m2=p2k2m_2=p_2^{k_2}m2​=p2k2​​,则ar≡ar%ϕ(m2)+ϕ(m2)(modm2)a^r\equiv a^{r\%\phi(m_2)+\phi(m_2)}\ \ (mod\ \ m_2)ar≡ar%ϕ(m2​)+ϕ(m2​)  (mod  m2​)

    ..................

    设mn=pnknm_n=p_n^{k_n}mn​=pnkn​​,则ar≡ar%ϕ(mn)+ϕ(mn)(modmn)a^r\equiv a^{r\%\phi(m_n)+\phi(m_n)}\ \ (mod\ \ m_n)ar≡ar%ϕ(mn​)+ϕ(mn​)  (mod  mn​)

    m1,m2,...,mnm_1,m_2,...,m_nm1​,m2​,...,mn​ 不同的质数的幂,两两互质

    ϕ(m)=ϕ(m1)∗ϕ(m2)∗...∗ϕ(mn)\phi(m)=\phi(m_1)*\phi(m_2)*...*\phi(m_n)ϕ(m)=ϕ(m1​)∗ϕ(m2​)∗...∗ϕ(mn​)

    又根据引理一,则得到:

    ar≡ar%ϕ(m)+ϕ(m)(modm)a^r\equiv a^{r\%\phi(m)+\phi(m)}\pmod mar≡ar%ϕ(m)+ϕ(m)(modm)

区间逆元

如果整数a,ba,ba,b满足a∗b%p=1a*b\%p=1a∗b%p=1,则称a,ba,ba,b在模ppp的意义下互为逆元
只有(a,p)=1(a,p)=1(a,p)=1,在模ppp的意义下aaa才有逆元,aaa的逆元记作a−1a^{-1}a−1

证明:

若(a,p)>1(a,p)>1(a,p)>1,则令d=gcd(a,p),d∣a,d∣pd=gcd(a,p),d|a,d|pd=gcd(a,p),d∣a,d∣p

∴d∣a%p∴d|a\%p∴d∣a%p(感性理解为:x倍ddd减去y倍ppp直到x<yx<yx<y,其差一定也为ddd的倍数)

∴a≡(x%y)d(modp)∴a\equiv (x\%y)d\ (mod\ \ p)∴a≡(x%y)d (mod  p)

∵d>1∵d>1∵d>1

∴(x%y)d≠1∴(x\%y)d≠1∴(x%y)d​=1

逆元的性质:若(b,p)=1(b,p)=1(b,p)=1,则a/b%p=a∗b−1%pa/b\%p=a*b^{-1}\%pa/b%p=a∗b−1%p

有一种求区间逆元的方式,时间复杂度为O(n)O(n)O(n)
设模数为m,f[n]m,f[n]m,f[n]表示nnn的逆元,其中[1,n)[1,n)[1,n)的逆元已经求出,则
f[n]=(−f[m%n]∗(m/n)%m+m)%mf[n]=(-f[m\%n]*(m/n)\%m+m)\%mf[n]=(−f[m%n]∗(m/n)%m+m)%m

证明:


公式一:

f[i]=−f[m−i]f[i]=-f[m-i]f[i]=−f[m−i]

证明:

f[i]∗i≡1(modm)f[i]*i\equiv1\ \ \ (mod\ m)f[i]∗i≡1   (mod m)

f[i]∗(m−i)≡−1(modm)f[i]*(m-i)\equiv-1\ \ \ (mod\ m)f[i]∗(m−i)≡−1   (mod m)

f[m−i]∗(m−i)≡1(modm)f[m-i]*(m-i)\equiv1\ \ \ (mod\ m)f[m−i]∗(m−i)≡1   (mod m)

f[i]=−f[m−i]f[i]=-f[m-i]f[i]=−f[m−i]


公式二:

f[i]=k∗f[k∗i]f[i]=k*f[k*i]f[i]=k∗f[k∗i]

证明:

f[i∗k]∗(i∗k)≡1(modm)f[i*k]*(i*k)\equiv 1\ \ \ (mod\ m)f[i∗k]∗(i∗k)≡1   (mod m)

(f[i∗k]∗k)∗i≡1(modm)(f[i*k]*k)*i\equiv 1\ \ \ (mod\ m)(f[i∗k]∗k)∗i≡1   (mod m)

f[i]∗i≡1(modm)f[i]*i\equiv 1\ \ \ (mod\ m)f[i]∗i≡1   (mod m)

f[i∗k]∗k=f[i]f[i*k]*k=f[i]f[i∗k]∗k=f[i]


f[n]=k∗f[k∗n]=m/n×f[m−m%n]f[n]=k*f[k*n]=m/n\times f[m-m\%n]f[n]=k∗f[k∗n]=m/n×f[m−m%n]

f[m−m%n]=−f[m%n]f[m-m\%n]=-f[m\%n]f[m−m%n]=−f[m%n]

f[n]=m/n×(−f[m%n])f[n]=m/n\times (-f[m\% n])f[n]=m/n×(−f[m%n])


inv[1] = 1;
for( int i = 2;i <= n;i ++ )inv[i] = ( mod - mod / i ) * inv[mod % i] % mod;

扩展欧几里得

扩展欧几里得是用来求不定方程:ax+by=cax+by=cax+by=c,且已知整数a,b,ca,b,ca,b,c
要求gcd(a,b)∣cgcd(a,b)|cgcd(a,b)∣c,才能保证有解

算法思想:递归求解

先求方程ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b),求出该方程的解,乘上系数c/gcd(a,b)c/gcd(a,b)c/gcd(a,b)即为原方程的解
ax+by=gcd(a,b)=gcd(b,a%b)=bx′+(a%b)y′=bx′+(a−a/b∗b)y′ax+by=gcd(a,b)=gcd(b,a\%b)=bx'+(a\%b)y'=bx'+(a-a/b*b)y'ax+by=gcd(a,b)=gcd(b,a%b)=bx′+(a%b)y′=bx′+(a−a/b∗b)y′
将a,ba,ba,b看做变量,移项合并同类项
ax+by=bx′+(a−a/b∗b)y′ax+by=bx'+(a-a/b*b)y'ax+by=bx′+(a−a/b∗b)y′
ax+by−bx′−ay′+a/b∗by′=0ax+by-bx'-ay'+a/b*by'=0ax+by−bx′−ay′+a/b∗by′=0
xa−y′a+yb−x′b+a/b∗y′b=0xa-y'a+yb-x'b+a/b*y'b=0xa−y′a+yb−x′b+a/b∗y′b=0
(x−y′)a+(y−x′+a/b∗y′)b=0(x-y')a+(y-x'+a/b*y')b=0(x−y′)a+(y−x′+a/b∗y′)b=0
∵a∗b≠0∵a*b≠0∵a∗b​=0
∴x−y′=0,y−x′+a/b∗y′=0∴x-y'=0,y-x'+a/b*y'=0∴x−y′=0,y−x′+a/b∗y′=0
∴{x=y′y=x′−y′∗(a/b)∴\begin{cases}x=y'\\y=x'-y'*(a/b)\end{cases}∴{x=y′y=x′−y′∗(a/b)​
只需要求出x′,y′x',y'x′,y′就可以求出x,yx,yx,y

而求x′,y′x',y'x′,y′可以继续递归下去

gcd(a,b)gcd(a,b)gcd(a,b)中的参数bbb最终会变为000,此时gcd(a,0)=agcd(a,0)=agcd(a,0)=a

于是有ax+by=gcd(a,0)=aax+by=gcd(a,0)=aax+by=gcd(a,0)=a,可以求出x=1,y=0x=1,y=0x=1,y=0

这是最底层的x,yx,yx,y,然后一层层返回,就可以求出最原始的x,yx,yx,y了


注意,exgcdexgcdexgcd求出来的x,yx,yx,y满足的方程组是ax+bx=gcd(a,b)ax+bx=gcd(a,b)ax+bx=gcd(a,b)

将这一对x,yx,yx,y乘上cgcd(a,b)\frac{c}{gcd(a,b)}gcd(a,b)c​,才是原方程的一组解

而且,这一组解只是一组特解,并不一定是最小的,可以通过通解公式去找到最小解xxx

ax+by=cax+by=cax+by=c
a(x−k)+b(y+akb)=ca(x-k)+b(y+\frac{ak}{b})=ca(x−k)+b(y+bak​)=c
因为aaa缩小若干倍,为了保证方程的正确性,bbb就应该放大若干倍,所以需满足b∣akb\bigg|akb∣∣∣∣​ak
∴bgcd(a,b)∣agcd(a,b)k∴\frac{b}{gcd(a,b)}\bigg|\frac{a}{gcd(a,b)}k∴gcd(a,b)b​∣∣∣∣​gcd(a,b)a​k
∵(bgcd(a,b),agcd(a,b))=1∵(\frac{b}{gcd(a,b)},\frac{a}{gcd(a,b)})=1∵(gcd(a,b)b​,gcd(a,b)a​)=1
∴bgcd(a,b)∣k∴\frac{b}{gcd(a,b)}|k∴gcd(a,b)b​∣k
所以原方程的aaa可以无限缩小bgcd(a,b)\frac{b}{gcd(a,b)}gcd(a,b)b​倍,直到a<bgcd(a,b)a<\frac{b}{gcd(a,b)}a<gcd(a,b)b​

同理,通解也可以被表示出来X=x+t×bgcd(a,b),Y=y−t×agcd(a,b)X=x+t\times \frac{b}{gcd(a,b)},Y=y-t\times \frac{a}{gcd(a,b)}X=x+t×gcd(a,b)b​,Y=y−t×gcd(a,b)a​

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 );}
}
//求x的最小解
x = ( x * ( c / d ) % ( b / d ) + ( b / d ) ) % ( b / d )

中国剩余定理

求一个模线性方程组xxx
{x≡a1(modr1)x≡a2(modr2)...x≡ak(modrk)\begin{cases}x\equiv a_1\ \ (mod\ \ r_1)\\x\equiv a_2\ \ (mod\ \ r_2)\\...\\x\equiv a_k\ \ (mod\ \ r_k)\end{cases}⎩⎪⎪⎪⎨⎪⎪⎪⎧​x≡a1​  (mod  r1​)x≡a2​  (mod  r2​)...x≡ak​  (mod  rk​)​
其中r1,r2,...,rkr_1,r_2,...,r_kr1​,r2​,...,rk​互质

对于rir_iri​,设Ai=∏j≠irjA_i=\prod_{j≠i}r_jAi​=∏j​=i​rj​

∵(r1,r2,...,rk)=1∵(r_1,r_2,...,r_k)=1∵(r1​,r2​,...,rk​)=1

∴(Ai,ri)=1∴(A_i,r_i)=1∴(Ai​,ri​)=1

则一定存在一个整数cic_ici​满足ci∗Ai%ri=1c_i*A_i\% r_i=1ci​∗Ai​%ri​=1

设xi=ai∗ci∗Aix_i=a_i*c_i*A_ixi​=ai​∗ci​∗Ai​,则xi%ri=aix_i\%r_i=a_ixi​%ri​=ai​

因为AiA_iAi​是除了rir_iri​以外的其他rrr值的最小公倍数

所以,xi%rj=0(j≠i)x_i\%r_j=0(j≠i)xi​%rj​=0(j​=i),即xix_ixi​模其他的rrr余数都为000,只有模rir_iri​的时候,余数为aia_iai​

换言之,把xix_ixi​加到满足其他方程j(j≠i)j(j≠i)j(j​=i)的解xjx_jxj​上,(xi+xj)(x_i+x_j)(xi​+xj​)也一样满足方程jjj

同理,如果xjx_jxj​也是这么求出来的,则(xi+xj)(x_i+x_j)(xi​+xj​)也满足方程iii

那么,我们对于每一个方程,都按照这个方法求出来该方程的解

把这些解累加起来,发现,这个和仍然满足每一个方程

即x=∑i=1kai∗ci∗Ai%rix=\sum_{i=1}^ka_i*c_i*A_i\%r_ix=∑i=1k​ai​∗ci​∗Ai​%ri​

对于xxx,加上所有的rrr值的最小公倍数,它仍然满足所有方程

所以,只要存在xxx,则意味着有无穷多组解

通解为:x=∑i=1k(ai∗ci∗Ai%ri)+p∗∏i=1kri,p∈Zx=\sum_{i=1}^k(a_i*c_i*A_i\%r_i)+p*\prod_{i=1}^kr_i,p∈Zx=i=1∑k​(ai​∗ci​∗Ai​%ri​)+p∗i=1∏k​ri​,p∈Z


扩展中国剩余定理

求一个模线性方程组xxx
{x≡a1(modr1)x≡a2(modr2)...x≡ak(modrk)\begin{cases}x\equiv a_1\ \ (mod\ \ r_1)\\x\equiv a_2\ \ (mod\ \ r_2)\\...\\x\equiv a_k\ \ (mod\ \ r_k)\end{cases}⎩⎪⎪⎪⎨⎪⎪⎪⎧​x≡a1​  (mod  r1​)x≡a2​  (mod  r2​)...x≡ak​  (mod  rk​)​
其中r1,r2,...,rkr_1,r_2,...,r_kr1​,r2​,...,rk​不一定互质

首先,取前两个方程x=k∗r1+a1=p∗r2+a2x=k*r_1+a_1=p*r_2+a_2x=k∗r1​+a1​=p∗r2​+a2​k∗r1−p∗r2=a2−a1k*r_1-p*r_2=a_2-a_1k∗r1​−p∗r2​=a2​−a1​

这种形如ax+by=cax+by=cax+by=c的不定方程,可以用扩展欧几里得计算

当gcd(r1,r2)gcd(r_1,r_2)gcd(r1​,r2​)不能整除a2−a1a_2-a_1a2​−a1​时,方程组无解

否则,根据exgcdexgcdexgcd,求出k0k_0k0​,满足k0∗r1−p∗r2=a2−a1k_0*r_1-p*r_2=a_2-a_1k0​∗r1​−p∗r2​=a2​−a1​

kkk的通解为:
k=k0+b∗(r2/gcd(r1,r2))k=k_0+b*(r_2/gcd(r_1,r_2))k=k0​+b∗(r2​/gcd(r1​,r2​))

带入到方程组x=k∗r1+a1x=k*r_1+a_1x=k∗r1​+a1​中,则有x=(k0+b∗(r2/gcd(r1,r2)))∗r1+a1=k0∗r1+b∗lcm(r1,r2)+a1,b∈Zx=(k_0+b*(r_2/gcd(r_1,r_2)))*r_1+a_1=k_0*r_1+b*lcm(r_1,r_2)+a_1,b∈Zx=(k0​+b∗(r2​/gcd(r1​,r2​)))∗r1​+a1​=k0​∗r1​+b∗lcm(r1​,r2​)+a1​,b∈Z
即x≡a1(modlcm(r1,r2))x\equiv a_1\ \ (mod\ \ lcm(r_1,r_2))x≡a1​  (mod  lcm(r1​,r2​))
这个方程相当于合并了原来的两个方程,而形式上又和原来的方程一致

继续采用这个方法,不断地合并方程组中的两个方程

直到最后合并为一个方程,则可以得到xxx的通解

注意在这个过程中,要注意求出的k0k_0k0​是k∗r1−p∗r2=(a2−a1)k*r_1-p*r_2=(a_2-a_1)k∗r1​−p∗r2​=(a2​−a1​)的解

而不是k∗r1−p∗r2=gcd(r1,r2)k*r_1-p*r_2=gcd(r_1,r_2)k∗r1​−p∗r2​=gcd(r1​,r2​)的解,前者是后者的倍数

//扩展中国剩余定理,求最小整数解x的模板代码
#include <cstdio>
#define MAXK 10000005
#define int long long
int mod[MAXK], r[MAXK];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 );}
}int Fabs( int x ) {return ( x < 0 ) ? -x : x;
}signed main() {int m;while( ~ scanf( "%lld", &m ) ) {for( int i = 1;i <= m;i ++ )scanf( "%lld %lld", &mod[i], &r[i] );int noans = 0, d, x, y;for( int i = 1;i < m;i ++ ) {exgcd( mod[i], mod[i + 1], d, x, y );if( Fabs( r[i + 1] - r[i] ) % d ) {noans = 1;break;}x = ( x * ( ( r[i + 1] - r[i] ) / d ) % ( mod[i + 1] / d ) + ( mod[i + 1] / d ) ) % ( mod[i + 1] / d );int lcm = mod[i] / d * mod[i + 1];mod[i + 1] = lcm, r[i + 1] = ( x * mod[i] + r[i] ) % lcm;}if( noans ) printf( "-1\n" );else printf( "%lld\n", r[m] );
//r[m]可能等于0,所以根据题目要求,若要最小正整数,则为mod[m]}return 0;
}

终于写完了!!!!!!!!!!!!!!!!!!!!!

利用以上所有知识进行证明

若ppp是质数(p>3p>3p>3),则2p+12p+12p+1和4p+24p+24p+2至多有一个数是质数

抛开333的倍数(肯定是合数),任何整数都可以被改写成3k±13k±13k±1的形式

  • p=3k+1p=3k+1p=3k+1
    2p+1=6k+3=3(k+1)2p+1=6k+3=3(k+1)2p+1=6k+3=3(k+1),合数
    4p+2=12k+6=6(2k+1)4p+2=12k+6=6(2k+1)4p+2=12k+6=6(2k+1),合数
  • p=3k−1p=3k-1p=3k−1
    2p+1=6k−12p+1=6k-12p+1=6k−1,未知
    4p+2=12k−2=2(6k−1)4p+2=12k-2=2(6k-1)4p+2=12k−2=2(6k−1),合数

最多就是那个未知情况为质数,得证

gcd(f(n),f(m))=f(gcd(n,m))gcd(f(n),f(m))=f(gcd(n,m))gcd(f(n),f(m))=f(gcd(n,m))
f:f:f: 斐波拉契数列

gcd⁡(an−1,am−1)=agcd(n,m)−1\gcd(a^n-1,a^m-1)=a^{gcd(n,m)}-1gcd(an−1,am−1)=agcd(n,m)−1

数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法相关推荐

  1. 密码学基础——辗转相除法,费马小定理,欧拉定理,裴蜀定理,中国剩余定理

    文章主要根据百度百科和维基百科相关相关知识点整理而成! 辗转相除法 辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法.它的具体做法是:用较小数除较大数 ...

  2. 初等数论四大定理(威尔逊定理,欧拉定理,中国剩余定理,费马小定理)

    1.威尔逊定理:在初等数论中,威尔逊定理给出了判定一个自然数是否为素数的充分必要条件.即:当且仅当p为素数时:( p -1 )! ≡ p-1 ( mod p ),但是由于阶乘是呈爆炸增长的,其结论对于 ...

  3. 数论 —— 线性同余方程组与中国剩余定理

    [线性同余方程组] 由若干个线性同余方程构成的线性方程组. 例如: 其解法最早由我国<孙子算经>给出,因此解法称为"孙子定理",又叫"中国剩余定理" ...

  4. ACM数论----中国剩余定理与拓展中国剩余定理

    一.问题引入: 在<孙子算经>中有这样一个问题:"今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?"这个问 ...

  5. 与数论的厮守04:扩展中国剩余定理

    根据数论的尿性,一般的定理解决不了的问题怎么办?那就拓展一下呗. 我们先看中国剩余定理,它解决的是一堆同余方程:nΞa1(mod b1),nΞa2(mod b2)...nΞak(mod bk),其中b ...

  6. 通常情况下的中国剩余定理

    这几天学了学中国剩余定理....本来计划是一天学互质版一天学非互质版的,结果非互质版就学了好长时间...不过好在会证明了,考场上大力推一波应该是没问题的吧... 中国剩余定理是求形如x≡a1(mod ...

  7. 孙子定理 中国剩余定理

    孙子定理 摘自:百度百科 目录 定义 解释 解法 数学公式 中国剩余定理 案例 展开 编辑本段 定义 中国古代求解一次同余式组(见同余)的方法.是数论中一个重要定理.又称中国剩余定理. 内容 编辑本段 ...

  8. 扩展欧几里得算法与中国剩余定理

    在<孙子算经>中有这样一个问题:有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 这个问题说的是,有一件物品,我们不知道它的数量.但是,如果三个三个数,最后会剩下两个:如 ...

  9. 密码学基础算法(二)中国剩余定理

    随便谷歌了一个图片做首图 原图地址: http://www.siwapu.com/etagid41968b0/ 密码学基础系列: (一) 基于整数的欧几里得算法和扩展欧几里得算法 (二) 中国剩余定理 ...

最新文章

  1. 2022-2028年中国硅藻土产业发展态势及市场发展策略报告
  2. 【Codevs1322】单词矩阵
  3. [css] rgba()和opacity这两个的透明效果有什么区别呢?
  4. input框placeholder样式修改
  5. JavaEE_Spring Framework
  6. android各个版本市场占有率(2013年3月)
  7. cmd 命令 之 dir 之 强化使用
  8. ArcGIS锁定显示比例
  9. Nginx图片服务器
  10. 微信小程序图片下边加文字组合
  11. 修改树莓派默认密码及切换root账号
  12. Terrasolid安装与破解
  13. LaTex幻灯片制作
  14. python中interval函数_python pandas Interval用法及代码示例
  15. linux lpte_所有的linux和unix的指令行下的指令都一样吗
  16. Buy and Resell HDU - 6438(补)更新贪心
  17. 淘宝天猫春节照常发货—轻轻松松“淘宝式过年”
  18. layui.laydate默认当前时间时分秒
  19. 2010年美国计算机图书市场Part1
  20. STM32—ADC详解

热门文章

  1. curd什么意思中文_每日一句英译英:She's a ten什么意思?
  2. 件工程项目开发最全文档模板_一文带你了解微信小程序社区和小程序开发
  3. Java JSON对象怎么遍历_Java遍历JsonObject对象
  4. 孕妇可以在计算机教室待吗,电脑对孕妇有辐射吗?孕妇使用电脑的注意事项
  5. 后端学习 - Spring5
  6. leetcode59:螺旋矩阵||(思路+详解)
  7. JS中this的应用场景,再了解下apply、call和bind!
  8. Java Character 方法
  9. 洛谷 P2853 [USACO06DEC]Cow Picnic S-dfs
  10. The Last Non-zero Digit POJ - 1150(n!mod p)