數論模板複習
阿新 • • 發佈:2021-10-19
基本結論:
費馬小定理:若p為質數,則
尤拉定理:若a,n互質,則
尤拉函式計算公式:
擴充套件歐幾里得演算法(Exgcd)
計算不定方程的一組特解。
由貝祖定理,上方程有解當且僅當時有解。程式碼中exgcd函式求出的是的解。將其乘上c/d即可得到原方程的解。
設x',y'為方程的一組特解,則方程通解可表示為:
程式碼:
int a,b,c,d,t,x,y; int exgcd(int a,int b,int &x,int &y) { if(b == 0) { x=1; y=0; return a; } int dd=exgcd(b,a%b,x,y),xx=x; x=y; y=xx-(a/b)*y; return dd; } int main() { a=read(); b=read(); c=read(); x=0; y=0; d=exgcd(a,b,x,y); if(c % d) { printf("-1\n"); } x=x*c/d; y=y*c/d; printf("%d %d ",x,y); }
對於線性同餘方程,我們可以將其轉化成不定方程來求解
乘法逆元
用於將取模時的除法運算轉換成乘法運算。即求出中的x.
求法:
1.費馬小定理+快速冪
a,p互質時,逆元即為ap-2 (mod p)
2.exgcd
即求解同餘方程
3.線性遞推求1~n中每個數的逆元