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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

算法总结之欧拉函数中国剩余定理

發(fā)布時(shí)間:2024/7/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法总结之欧拉函数中国剩余定理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

算法總結(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)容,希望文章能夠幫你解決所遇到的問題。

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