初等数论入门笔记

数论课本

常见记号:

\(gcd(a,b)\) a与b的最大公约(因)数;
\(lcm(a,b)\) a与b的最小公倍数;

常见性质:

\(lcm(a,b) = a * b / gcd(a,b)\)

同余的性质

求gcd

1. 欧几里得算法

点击查看代码
inline int gcd( int a , int b ) {
	return b == 0 ? a : gcd( b , a % b );
}

2. stein算法(不需除法,适合高精)

线性同余方程

部分证明出处

一元线性同余方程(扩展欧几里得算法;exgcd)

前置知识:

同余的性质、欧几里得算法

求解:

解任意同余方程 \(ax ≡ c \ (mod\ \ m)\),即求\(ax - c ≡ 0 \ (\ mod\ \ m)\)的解。

此时\(m|(ax-c)\),也就是说此时存在\(y \in Z\),\(m·y = ax - c\)
因此解同余方程\(ax ≡ c \ (mod\ \ m)\)和解形如\(ax + by = c\)的不定方程(\(a,b,c,x,y\) 为整数)等价。

\(->\)问题转化为解形如\(ax + by = c\)的不定方程(\(a,b,c,x,y\) 为整数)(又叫做丢番图方程)

裴蜀定理:

  • 表述:不定方程 \(ax + by = c\)\(a,b,c,x,y\) 为整数)有解,当且仅当 \(c\ \ mod\ \ gcd(a,b) = 0\)

  • 简易证明: \(a\)\(gcd(a,b)\)的倍数, \(b\)也为\(gcd(a,b)\)的倍数
    \(ax+by\)一定为\(gcd(a,b)\)的倍数(\(x,y\)为整数)
    又∵\(ax + by = c\)有解
    \(c\)\(gcd(a,b)\)的倍数(必要性略)

  • 推论:\(a,b\)互质的充分必要条件是存在整数\(x,y\)使\(ax+by=1\) ( \(因为此时gcd(a,b)=1\) )

扩展欧几里得算法(求解不定方程 \(ax + by = c\)\(a,b,c,x,y\) 为整数))

Q: 为什么叫“扩展欧几里得算法”呢?
A: 因为这个算法在求出\(gcd(a,b)\)的同时,可以求出一组整数\(x,y\),使得不定方程 \(ax + by = c\)(\(c\)为整数)成立。

由裴蜀定理可得:

\(aX + bY = c\)有解,则\(ax + by = gcd(a,b)\)有解,
\(c = k·gcd(a,b)\),有:\(X=kx,Y=ky\);

因而先考虑求解\(ax + by = gcd(a,b)\)
又由裴蜀定理知,此时存在\(x',y'\)\(ax+by=gcd(a,b) 且 bx'+ (a-b\lfloor \frac{a}{b} \rfloor)y'=gcd(b, a-b\lfloor \frac{a}{b} \rfloor)\)

由欧几里得算法知\(gcd(a,b)=gcd(b, a-b\lfloor \frac{a}{b} \rfloor)\)
所以可联立上方两个式子:
\(ax+by=bx'+ (a-b\lfloor \frac{a}{b} \rfloor)y'\)
整理,得:
\(a(x-y')+b(y-(x'-\lfloor \frac{a}{b} \rfloor y'))=0\)
要使上述式子恒成立,则\(x=y',y=x'-\lfloor \frac{a}{b} \rfloor y'\);①

可以递归求解\(x',y'\),因此求解规模相较原方程大幅减小。

递归边界和\(gcd\)求解是一致的,当\(b = 0时,gcd(a,b)=gcd(a,0),方程变为a·x_n = gcd(a,0) = a\),
解,得:当\(b = 0时,x_n=1,y_n=0\),递归中回代(注意临时存储\(x'\))①即可求出原方程解。

点击查看代码
inline ll exgcd( ll a , ll b ) {
	if( b == 0 ) {
		x = 1;
		y = 0;
		return a;//递归边界同gcd一致,此时ax = gcd(a,0) = a , x = 1 		
	}
	else {
		exgcd( b , a % b );
		ll t = x;//储存x' 
		x = y;
		y = t - ( a / b ) * y;
	}
}

注意事项:大部分题目要求解出非负解,所以\(exgcd\)后要对\(x\)进行处理

推广应用(exgcd求乘法逆元)

逆元是什么,为什么要求逆元呢?
有些时候,在计数题中,我们要对有理数取模(取余)

例如计算\(\frac{b}{a} \ \ mod \ \ c\)的值(\(a,b,c\)均为整数)时,

由分式的性质易得:

\[\frac{b}{a} \ \ mod \ \ c = \frac{a^{-1}·b}{a^{-1}·a} \ \ mod \ \ c = a^{-1}·b \ \ mod \ \ c \]

这也就是说,如果\(a^{-1}\)为整数,那么我们就可以把分数取余问题转化为整数取余。

\(a^{-1}\)怎样才能为整数呢?问题的关键是在模意义下考虑问题。

--未完待续

线性同余方程组

筛法

1. 埃氏筛

2. 线性筛求素数

3. 线性筛求欧拉函数(求积性函数)

常见数论定理

1. 费马小定理

2. 欧拉定理

3. 中国剩余定理

posted @ 2022-08-16 15:30  _画生  阅读(124)  评论(0编辑  收藏  举报