算法总结之欧拉函数中国剩余定理
算法總結(jié)之歐拉函數(shù)&中國剩余定理
1.歐拉函數(shù)
概念:在數(shù)論,對(duì)正整數(shù)n,歐拉函數(shù)是少于或等于n的數(shù)中與n互質(zhì)的數(shù)的數(shù)目。
通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn)?
其中p1, p2……pn為x的所有質(zhì)因數(shù),x是不為0的整數(shù)?
注意:
1)?φ(1)=1.
2)每種質(zhì)因數(shù)只一個(gè)。比如12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)=4
3)若n是質(zhì)數(shù)p的k次冪,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因?yàn)槌藀的倍數(shù)外,其他數(shù)都跟n互質(zhì)。
4)φ(mn)=φ(m)φ(n)
5)當(dāng)n為奇數(shù)時(shí),φ(2n)=φ(n)
代碼實(shí)現(xiàn):
1)直接求歐拉數(shù):
1 /*函數(shù)返回值為n的歐拉函數(shù)值*/ 2 int euler(int n) 3 { 4 int s=n,i,m; 5 m=sqrt(n); 6 for(i=2;i<=m;i++){ 7 if(n%i==0) 8 s=s/i*(i-1); 9 while(n%i==0) 10 n/=i; 11 } 12 if(n>1) 13 s=s/n*(n-1); 14 return s; 15 }2)打表
1 /*打印1-MAXN的歐拉函數(shù)表*/ 2 int a[MAXN]= {1,1,0}; 3 void euler() 4 { 5 int i,j; 6 for(i=2; i<=MAXN; i++) 7 if(!a[i]) 8 for(j=i; j<=MAXN; j+=i) 9 { 10 if(a[j]==0) a[j]=j; 11 a[j]=a[j]/i*(i-1); 12 } 13 }?2.中國剩余定理
原文:
《孫子算經(jīng)》中的題目:有物不知其數(shù),三個(gè)一數(shù)余二,五個(gè)一數(shù)余三,七個(gè)一數(shù)又余二,問該物總數(shù)幾何?
《孫子算經(jīng)》中的解法:三三數(shù)之,取數(shù)七十,與余數(shù)二相乘;五五數(shù)之,取數(shù)二十一,與余數(shù)三相乘;七七數(shù)之,取數(shù)十五,與余數(shù)二相乘。將諸乘積相加,然后減去一百零五的倍數(shù)。
結(jié)論:
令任意固定整數(shù)為M,當(dāng)M/A余a,M/B余b,M/C余c,M/D余d,…,M/Z余z時(shí),這里的A,B,C,D,…,Z為除數(shù),除數(shù)為任意自然數(shù)時(shí);余數(shù)a,b,c,d,……,z為自然整數(shù)時(shí)。
1)當(dāng)命題正確時(shí),在這些除數(shù)的最小公倍數(shù)內(nèi)有解,有唯一的解,每一個(gè)最小公倍數(shù)內(nèi)都有唯一的解。
2)當(dāng)M在兩個(gè)或兩個(gè)以上的除數(shù)的最小公倍數(shù)內(nèi)時(shí),這兩個(gè)或兩個(gè)以上的除數(shù)和余數(shù)可以定位M在最小公倍數(shù)內(nèi)的具體位置,也就是M的大小。
3)正確的命題:分別除以A,B,C,D,…,Z不同的余數(shù)組合個(gè)數(shù)=A,B,C,D,…,Z的最小公倍數(shù)=不同的余數(shù)組合的循環(huán)周期。
具體步驟(以《孫子算經(jīng)》中的題目為例):
1)找出三個(gè)數(shù):從3和5的公倍數(shù)中找出被7除余1的最小數(shù)15,從3和7的公倍數(shù)中找出被5除余1 的最小數(shù)21,最后從5和7的公倍數(shù)中找出除3余1的最小數(shù)70。
2)用15乘以2(2為最終結(jié)果除以7的余數(shù)),用21乘以3(3為最終結(jié)果除以5的余數(shù)),同理,用70乘以2(2為最終結(jié)果除以3的余數(shù)),然后把三個(gè)乘積相加(15*2+21*3+70*2)得到和233。
3)用233除以3,5,7三個(gè)數(shù)的最小公倍數(shù)105,得到余數(shù)23,即233%105=23。這個(gè)余數(shù)23就是符合條件的最小數(shù)。
轉(zhuǎn)載于:https://www.cnblogs.com/Enumz/p/3878509.html
總結(jié)
以上是生活随笔為你收集整理的算法总结之欧拉函数中国剩余定理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DEDE无简略标题时显示完整标题
- 下一篇: 【转载】徐小平techCrunch演讲: