版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
簡單數(shù)論及算法選講金靖華東師大二附中何為數(shù)論數(shù)論,是專門研究整數(shù)的純數(shù)學的分支,而整數(shù)的基本元素是素數(shù)(也稱質數(shù)),所以數(shù)論的本質是對素數(shù)性質的研究。數(shù)論被高斯譽為“數(shù)學中的皇冠”。按研究方法來看,數(shù)論大致可分為初等數(shù)論和高等數(shù)論。初等數(shù)論是用初等方法研究的數(shù)論,它的研究方法本質上說,就是利用整數(shù)環(huán)的整除性質,主要包括整除理論、同余理論、連分數(shù)理論?;靖拍罨靖拍?/p>
素數(shù)與合數(shù)
素數(shù)判定
1
boolisPrime(intn){2
if
(n==1)
return
false;3
else{4
for(inti=2;i*i<=n;i++)5
if
(n%i==
0)
return
false;6
return
true;7
}8
}例題:素因數(shù)分解
1
for(inti=2;i*i<=n;i++)
2
if(n%i==
0)
{3 cout<<n/i<<endl;4
break;5
}例題:[CF776B]Sherlockandhisgirlfriend
最大公約數(shù)和最小公倍數(shù)最大公約數(shù)和最小公倍數(shù)
1vector<int>factor(intx)
{2 vector<int>ret;3
for
(inti=
2;i*i<=x;
++i)4
while
(x%i==
0)
{5 ret.push_back(i);6 x/=i;7
}8
if
(x>
1)ret.push_back(x);9
returnret;10
}
1intpose(inta,intb){2 for(intx=2;x*x<=min(a,b);x++){3 while(a%x==0&&b%x==0){a/=x;b/=x;ans*=x;}4 while(a%x==0)a/=x;5 while(b%x==0)b/=x;6 }7if(a%b==0)ans*=b;8 elseif(b%a==0)ans*=a;9 returnans;10}
1
intEuclid(inta,intb){2
if
(b==0)
returna;3
else
returnEuclid(b,a%b);4
}1
intEuclid(inta,intb){2
return
(b==0)
?a:Euclid(b,a%b);3
}
例題:[BZOJ1876]SuperGCD
1
intgcd(intm,intn){2
if
(m==n)
returnm;3
if
(m<n)
returngcd(n,m);4
if
(m&
1
==
0)
5
return
(n&
1
==
0)?
2*gcd(m>>1,n>>1):gcd(m>>1,n);6
return
(n&
1
==
0)?gcd(m,n>>1):gcd(n,m-n);7
}
1 ans=1;2
for(inti=1;i<=n;i++){3 scanf("%d",&a[i]);4 ans=ans*a[i]/gcd(ans,a[i]);5
}6 printf("%d",ans);
兩數(shù)互素(互質)
模運算基本概念
剩余系
模運算
模運算
1
intmul_mod(inta,intb,intm){2 a%=m;b%=m;3
return
(int)((long
long)a*b%m);4
}冪取模
快速冪1
intpow_mod(inta,intn,intm){2
if(n==
0)
return
1;3
intx=pow_mod(a,n/2,m);4
long
longans=
(long
long)x*x%m;5
if(n%
2
==
1)ans=ans*a%m;6
returnans;7
}例題:NOIP2013D1T1
擴展歐幾里得算法裴蜀定理
例題:[BZOJ1441]
擴展歐幾里得算法
擴展歐幾里得算法
擴展歐幾里得算法1
intextend_gcd(inta,
intb,
int
&x,
int
&y)
{2
if
(b==
0)
{3 x=
1;y=
0;4
returna;5
}
6
else
{7
intret=extend_gcd(b,a%b,y,x);8 y-=x*
(a/b);9
returnret;10
}11
}擴展歐幾里得算法
擴展歐幾里得算法
例題:線性組合
例題:線性組合
例題:線性組合1
intmain(){
2 scanf("%d",&n);3 gcd[0]=0;4
for(inti=1;i<=n;i++)
{5 scanf("%d",&a[i]);6 gcd[i]=Euclid(gcd[i-1],a[i]);7
}8 scanf("%d",&c);9
if
(c%gcd[n]==0){
10 y[n]=c/gcd[n];11
for
(inti=n;i>1;i--)12 Extended_Euclid(gcd[i-1],a[i],gcd[i]*y[i],y[i-1],x[i]);
13 x[1]=y[1];14
for(inti=1;i<=n;i++)printf("%d",x[i]);15
}16
return
0;17
}逆元模
??
意義下乘法的逆
逆元
1
intinverse(inta,
intb)
{2
intx,y;3 exgcd(a,b,x,y);4
returnx;5
}
線性求逆元:遞推法
1
for
(inverse[1]
=
1,i=
2;i<=n;
++i)2 inverse[i]
=inverse[p%i]*(p-p/i)
%p;線性求逆元:倒推法
例題:組合數(shù)取模
容斥原理
各集合的交集容斥原理容斥原理容斥原理
錯排問題
錯排問題
歐拉函數(shù)歐拉函數(shù)
容斥原理求歐拉函數(shù)
容斥原理求歐拉函數(shù)
基于素因數(shù)分解求歐拉函數(shù)的算法1
inteuler_phi(intn){2
intres=n;3
for(inti=
2;i*i<=n;i++)
{4
if(n%i==
0)
{5 res=res/i*
(i-
1);
6
for
(;n%i==
0;n/=i);7
}8
}9
if
(n!=
1)res=res/n*
(n-
1);10
returnres;11
}
素數(shù)篩法埃拉托斯特尼篩法埃式篩法
埃式篩法1 #definemaxn10000002
boolisPrime[maxn+1];/*isPrime[i]true表示i為素數(shù)*/3
voideratos(intn){4
inti,j;5 isPrime[0]
=isPrime[1]
=
false;6
for(i=
2;i<=n;
++i)
7 isPrime[i]
=
true;
8
for(i=
2;i*i<=n;
++i)
9
if(isPrime[i]){
10
for(j=i*i;j<=n;j+=i)
11 isPrime[j]
=
false;12
}13
}篩法優(yōu)化素因數(shù)分解-1利用埃氏篩法可以快速實現(xiàn)素因數(shù)分解,只要在判定質數(shù)時記錄下每個數(shù)值的最小素因數(shù)即可。算法實現(xiàn)如下:1 #definemaxn10000002
boolisPrime[maxn+1];3
int
minFactor[maxn+1];
//記錄每個數(shù)的最小素因數(shù)的數(shù)組5
voideratos(intn){6
inti,j;7 isPrime[0]
=isPrime[1]
=
false;8 minFactor[0]
=minFactor[1]
=
-1;9
for(i=
2;i<=n;
++i)
{10 isPrime[i]
=
true;11 minFactor[i]
=i;
//初始化,表示還未找到最小的素因數(shù)12
}篩法優(yōu)化素因數(shù)分解-213
for(i=
2;i*i<=n;
++i)
{
14
if(isPrime[i]){15
for(j=i*i;j<=n;j+=i){16 isPrime[j]
=
false;17
if(minFactor[j]==j)
//如果此前尚未找到j的素因數(shù),18
//那么將其設為i19 minFactor[j]
=i;
20
}21
}22
}23}篩法優(yōu)化素因數(shù)分解-324 vector<int>factor(intx)
{25 vector<int>ret;26
while(x>
1){27 ret.push_back(minFactor[n]);28 n/=minFactor[x];29
}30
returnret;31
}利用埃氏篩法,生成歐拉函數(shù)值的表1
inteuler[MAX_N];2
voideuler_phi2(){3
for
(inti=
0;i<MAX_N;i++)euler[i]
=i;4
for
(inti=
2;i<MAX_N;i++)
{5
if
(euler[i]
==i)
{6
for
(intj=i;j<MAX_N;j+=i)
7 euler[j]
=euler[j]
/i*
(i-
1);8
}9
}10
}
歐拉篩法(線性篩)
i=素數(shù)表篩除的數(shù)i=素數(shù)表篩除的數(shù)2{2}{4}13{2,3,5,7,11,13}{26,39}3{2,3}{6,9}14{2,3,5,7,11,13}{28}4{2,3}{8}15{2,3,5,7,11,13}{30,45}5{2,3,5}{10,15,25}16{2,3,5,7,11,13}{32}6{2,3,5}{12}17{2,3,5,7,11,13,17}{34}7{2,3,5,7}{14,21,35,49}18{2,3,5,7,11,13,17}{36}8{2,3,5,7}{16}19{2,3,5,7,11,13,17,19}{38}9{2,3,5,7}{18,27}20{2,3,5,7,11,13,17,19}{20}10{2,3,5,7}{20}21{2,3,5,7,11,13,17,19}{42}11{2,3,5,7,11}{22,33}22{2,3,5,7,11,13,17,19}{44}12{2,3,5,7,11}{24}.........歐拉篩法(線性篩)1
voidEuler_sieve(intn){2 memset(isprime,true,sizeof(isprime));3 prime[0]=0;4
for(inti=2;i<=n;i++){5
if
(isprime[i])prime[++prime[0]]=i;//把素數(shù)保存到素數(shù)表prime中6
for(intj=1;j<=prime[0]
&&i*prime[j]<=n;j++){7 isprime[i*prime[j]]=false;//篩除i*prime[j]8
if
(i%prime[j]==0)
break;9
//當i中含有素因子prime[j]時中斷循環(huán),確保每個數(shù)只被它的最小素因子篩除10
}11
}12
}素數(shù)相關定理費馬小定理
費馬小定理
使用費馬小定理來判定素數(shù)
歐拉定理
使用歐拉定理求逆元
1
intpowermod(inta,
intb,
intn){2
intret=
1;3
while
(b)
{4
if
(b&
1)ret=
(long
long)ret*a%n;5 a=
(long
long)a*a%n;6 b>>=
1;7
}8
returnret;9
}威爾遜定理
線性同余方程線性同余方程
線性同余方程組
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省菏澤市鄆城縣第一中學2023-2024學年七年級上學期第一次月考生物試題(解析版)-A4
- 養(yǎng)老院老人心理關愛制度
- 養(yǎng)老院老人緊急救援人員職業(yè)道德制度
- 房屋建筑項目工程總承包合同(2篇)
- 2025年石家莊貨運從業(yè)資格證考試試題及答案大全解析
- 2024年時尚插畫師聘用協(xié)議書2篇
- 2024年度城市景觀工程土石方施工與景觀設計承包合同3篇
- 2025年塔城貨運從業(yè)資格證考試題庫a2
- 2024企業(yè)市場分析與品牌推廣合作協(xié)議2篇
- 2024年版公司裝修工程協(xié)議規(guī)范格式版
- 《汽車故障診斷與排除》教案-項目4-汽車電氣設備的故障診斷與排除
- 警察應急通信
- 人教版數(shù)學四年級上冊-第五單元-平行四邊形和梯形-單元測試卷(含答案)
- 2024年下半年廣東廣州海珠區(qū)總工會招考9人易考易錯模擬試題(共500題)試卷后附參考答案
- 樁工機械使用前驗收表
- 中醫(yī)傳統(tǒng)康復治療技術
- 兒童毛細支氣管炎管理臨床實踐指南(2024版)解讀
- 小學學校三年發(fā)展規(guī)劃(2024年-2026年)
- CMA質量記錄表格
- 國開(河北)2024年秋《現(xiàn)代產權法律制度專題》形考作業(yè)1-4答案
- 2024浙江桐廬縣文化旅游投資集團限公司招聘筆試及高頻難、易錯點500題模擬試題附帶答案詳解
評論
0/150
提交評論