ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数论

2022-07-31 17:32:35  阅读:220  来源: 互联网

标签:约数 gcd 数论 mid 整数 余数 operatorname


前言

本蒟蒻在写初赛题后听讲评时,听得一脸懵,发现对数论无所了解,于是疯狂地补,此博客在有生之年不会完结(吧),希望 \(hzx\) 不会又说我。

符号

整除符号:\(x \mid y\)

取模符号:\(x \bmod y\)

互质符号:\(x \perp y\)

最大公约数:\(\gcd(x,y)\)

最小公倍数:\(\operatorname{lcm}(x,y)\)

求和符号:\(\sum\)

求积符号:\(\prod\)

阶乘:\(n!\)(即 \(\prod^{n}_{i=1}i\))

注:\(0!=1\)

向下取整:\(\lfloor x \rfloor\)

向上取整:\(\lceil x \rceil\)

数论基础概念

整除

整除的定义

设 \(a,b \in \mathbf{Z},a \ne 0\)。如果 \(\exists q \in \mathbf{Z}\),使得 \(b=aq\),那么就说 \(b\) 可被 \(a\) 整除,记作 \(a \mid b\),且称 \(b\) 是 \(a\) 的倍数,\(a\) 是 \(b\) 的约数(因数)。

注:\(b\) 不被 \(a\) 整除记作 \(a \nmid b\)。

整除的性质

  • \(a \mid b \iff -a \mid b \iff -b \mid a \iff |a| \mid |b|\)

  • \(a \mid b \land b \mid c \implies a \mid c\)

  • \(a \mid b \land a \mid c \iff \forall x,y \in \mathbf{Z},a \mid (xb+yc)\)

    证明:设 \(b=an,c=am\),那么 \(xb+yc=xan+yam=a(xn+ym)\)。

  • \(a \mid b \land b \mid a \implies b= \pm a\)

  • 设 \(m \ne 0\),那么 \(a \mid b \iff ma \mid mb\)

  • 设 \(b \ne 0\),那么 \(a \mid b \implies |a| \leq |b|\)

  • 设 \(a \ne 0,b=qa+c\),那么 \(a \mid b \iff a \mid c\)

约数和倍数

通过对倍数的定义,可得 \(0\) 是所有非 \(0\) 整数的倍数。(\(0\) 不可以做被除数)

对于任何整数 \(b \ne 0\),对于 \(b\) 的约数只有有限个。

显然约数(显然因数):对于整数 \(b \ne 0\),\(\pm 1\)、\(\pm b\) 是 \(b\) 的显然约数。当 \(b= \pm 1\) 时,\(b\) 只有两个显然约数。

对于整数 \(b \ne 0\),\(b\) 的其他约数为真约数(真因数、非显然约数、非显然因数)。

约数的性质

  • 设整数 \(b \ne 0\),当 \(d\) 遍历 \(b\) 的全体约数时,\(b \over d\) 也遍历 \(b\) 的全体约数。

  • 设整数 \(b > 0\),则当 \(d\) 遍历 \(b\) 的全体正约数时,\(b \over d\) 也遍历 \(b\) 的全体正约数。

带余数除法

余数的定义

设 \(a,b\) 为两个给定的正整数,\(a \ne 0\)。设 \(d\) 是一个给定的整数。那么,一定存在唯一的一对整数 \(q,r\),满足 \(b=qa+r(d \le r < |a|+d)\)。

无论整数 \(d\) 取何值,\(r\) 统称为余数。均有 \(a \mid b\) 等价于 \(a \mid r\)。

一般情况下,\(d\) 取 \(0\),此时等式 \(b=qa+r(0 \le r < |a|)\) 称为带余数除法(带余除法)。这里的余数 \(r\) 称为最小非负余数。

余数的另外两种常见取法

绝对最小余数:\(d\) 取 \(|a|\) 的一半的相反数。即 \(b=qa+r(- \frac{|a|}{2} \le r < |a|- \frac{|a|}{2} )\)。

最小正余数:\(d\) 取 \(1\)。即 \(b=qa+r(1 \le r < |a|+1)\)。

带余数除法的余数只有非负最小余数。如果没有特殊证明,余数总是指最小非负余数。

余数的性质

  • 任一整数被正整数 \(a\) 除后,余数一定是且仅是 \(0\) 到 \((a-1)\) 这 \(a\) 个数中的一个。

  • 相邻的 \(a\) 个整数被正整数 \(a\) 除后,恰好取到上述 \(a\) 个余数。特别的,一定有且仅有一个数被 \(a\) 整除。

最大公约数与最小公倍数

最大公约数(\(\operatorname{gcd}\))定义

一组整数的公约数,是指同时是这组数中每一个数的约数。\(\pm 1\) 是任意一组整数的公约数。

那么最大公约数,顾名思义,就是这组数的公约数中最大的一个。

求最大公约数(欧几里得算法,也称辗转相除法)

设 \(\forall a,b \in \mathbf{Z}(a > b)\)。

可以整除的情况:如果 \(b\) 是 \(a\) 的约数,那么 \(b\) 就是二者的最大公约数。

不可以整除的情况:\(a=bq+r\)(带余除法),通过证明可得,\(\operatorname{gcd}(a,b)= \operatorname{gcd}(b,a \bmod b)\)。

证明如下:

设 \(a=bq+r(r=a \bmod b)\),设 \(d \mid a,d \mid b\)(即 \(d\) 为 \(a\ b\) 的公约数),则 \(r=a-bq,\frac{r}{d}= \frac{a}{d}- \frac{b}{d}q\)。

由上面的式子可知 \(r \over d\) 为整数,那么可得 \(d \mid r\),所以 \(d\) 也会是 \(a \bmod b\) 的公约数。

可得 \(a,b\) 与 \(a,a \bmod b\) 的公约数相同,那么二者的最大公约数也相同。

即 \(\operatorname{gcd}(a,b)= \operatorname{gcd}(a,a \bmod b)\)。

递归代码易得:

int gcd(int a,int b) {
	if(b==0) return a;
	return gcd(b,a%b);
}

最小公倍数(\(\operatorname{lcm}\))定义

一组整数的公倍数,是指同时是这组数中的每一个数的公倍数。\(0\) 是任意一组整数的公倍数。

顾名思义,一组整数的最小公倍数,是指所有正公倍数中最小的一个。

求最小公倍数

设 \(a=p_{1}^{k_{a_1}}p_{2}^{k{a_2}}…p_{n}^{k_{a_n}},b=p_{1}^{k_{b_1}}p_{2}^{k{b_2}}…p_{n}^{k_{a_n}}\)。

对于 \(a\) 和 \(b\),二者的最大公约数是 \(p_{1}^{\max (k_{a_1},k_{b_1})}p_{2}^{\max (k_{a_2},k_{b_2})}…p_{n}^{\max (k_{a_n},k_{b_n})}\)

最小公倍数是 \(p_{1}^{\min (k_{a_1},k_{b_1})}p_{2}^{\min (k_{a_2},k_{b_2})}…p_{n}^{\min (k_{a_n},k_{b_n})}\)

由于 \(k_a+k_b= \max (k_a,k_b)+ \min (k_a,k_b)\)

所以 \(\operatorname{gcd}(a,b) \times \operatorname{lcm}(a,b)=a \times b\),即 \(\operatorname{lcm}(a,b)=a \times b \div \operatorname{gcd}(a,b)\)。

int gcd(int a,int b) {
	if(b==0) return a;
	return gcd(b,a%b);
}

int lcm(int a,int b) {
	return a*b*1.0/gcd(a,b);
}

互素

两个整数互素,即 \(\operatorname{gcd}(a,b)=1\)。

多个整数互素,即 \(\operatorname{gcd}(a_1,…,a_n)\)。

多个整数互素,不一定任意两两互素。

素数和合数

素数与合数的定义

设 \(p \ne 0,\pm 1\)。如果除了 \(p\) 的显然约数外 \(p\) 没有其他约数,那么称 \(p\) 为素数(不可约数)。

反之,若 \(p \ne 0,\pm 1\) 且 \(p\) 不是素数,那么称 \(p\) 为合数。

若整数的因数是素数,则该素数成为该整数的素因数(素约数)。

素数与合数的性质

  • 大于 \(1\) 的整数 \(a\) 是合数,等价于 \(a\) 可以表示为整数 \(d\) 和 \(e\) \((1 < d,e< a)\) 的乘积。

  • 如果素数 \(p\) 有大于 \(1\) 的约数 \(d\),那么 \(d=p\)。

  • 大于 \(1\) 的整数 \(a\) 一定可以表示为素数的乘积。

  • 对于合数 \(a\),一定存在素数 \(p \le \sqrt{a}\) 使得 \(p \mid a\)。

  • 素数有无穷多个。

  • 所有大于 \(3\) 的素数都可以表示为 \(6n+1\) 的形式。

算术基本定理(唯一分解定理)

算术基本引理

设 \(p\) 是素数,\(p \mid a_1a_2\),那么 \(p \mid a_1\) 和 \(p \mid a_2\) 至少有一个成立。

算法基本定理

设正整数 \(a\),那么必有表示(素数与合数的性质):

\[a=p_1p_2p_3…p_n \]

其中 \(p_j(1 \le j \le n)\) 是素数。

将上述表示中相同的素数合并可得标准素因数分解式:

\[a=p_1^{k_1}p_2^{k_2}p_3^{k_3}…p_n^{k_n} \]

算术基本定理与算法基本引理是等价的。

标签:约数,gcd,数论,mid,整数,余数,operatorname
来源: https://www.cnblogs.com/Mr-Lin-081122/p/16537598.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有