《算法竞赛中的初等数论》(信奥 / 数竞 / ACM)前言、后记、目录索引(十五万字符的数论书)

整理的算法模板合集: ACM模板

点我看算法全家桶系列!!!

实际上是一个全新的精炼模板整合计划


《算法竞赛中的初等数论》(信奥 / 数竞 / ACM)前言、后记、目录索引(十五万字符的数论书)_第1张图片

《算法竞赛中的初等数论》

数论全家桶(信奥 / 数竞 / ACM)

繁凡さん(孟繁宇)

2021/1/29

https://fanfansann.blog.csdn.net/

前言

​ 数论是纯粹数学的分支之一,主要研究整数的性质。整数可以是方程式的解(丢番图方程)。有些解析函数(像黎曼 ζ 函数)中包括了一些整数、质数的性质,透过这些函数也可以了解一些数论的问题。透过数论也可以建立实数和有理数之间的关系,并且用有理数来逼近实数(丢番图逼近)。

​ 按研究方法来看,数论大致可分为初等数论和高等数论。初等数论是用初等方法研究的数论,它的研究方法本质上说,就是利用整数环的整除性质,主要包括整除理论、同余理论、连分数理论。高等数论则包括了更为深刻的数学研究工具。它大致包括代数数论、解析数论、计算数论等等。

​ 简而言之,数论就是研究整数的理论,在ACM / OI 竞赛中,经常用到数论的相关知识,纯粹考察数论的题目并不会很多,大部分是和其他类型的问题结合起来的,常考知识:约数,倍数,模线性方程,欧拉定理,素数,反演等等。

​ 本文着重于编程竞赛,即国际大学生程序设计竞赛 ACM / ICPC 、信息学奥林匹克竞赛 NOIP,NOI,IOI等编程竞赛中相关的初等数论问题,包含几乎所有数论相关内容的定理,概念,代码实现,部分证明以及例题选讲,更多定理证明内容参见《初等数论及其应用》和《具体数学》。

由于涵盖了初等数论的绝大多数概念,定理,证明,推论,所以本文同样适合数学竞赛的同学阅读使用。

​ 其中:

0x00整除,讲解了一些整除的基础知识,理解这些内容是我们学习接下来的内容的基础。

0x10整除相关,为大家系统地讲解了初等数论研究的最重要的内容之一:素数与约数,包括素数、反素数、唯一分解定理、最大公约数、最小公倍数、互质与欧拉函数等整除相关的基本概念,并稍作拓展,部分小节为大家提供了一些经典例题,供大家学习巩固使用,还讲解了容斥原理的相关概念和在数论里的两个经典运用,是非常重要的知识点。最后拓展了一下素数在实际生活中的应用:加密与解密,感兴趣的读者可以深入学习一下。

0x20同余,同余及同余方程,初等数论研究的另一大版块,也是竞赛要求的基础知识,首先为大家带来的模运算这个重要概念,在了解了同余的概念以后又为大家简单讲解了竞赛常用定理,欧几里得算法,拓展欧几里德算法,类欧几里得算法,求乘法逆元,解线性同余方程、高次同余方程等基本算法,需要大家理解并掌握。前三章是数论的基础,请一定掌握。

0x30积性函数,从第四章开始,就进入了进阶版的数论知识,我为大家讲解了数学中会涉及到的一些函数,以及最重要的积性函数的相关概念,常见积性函数,并简要证明了莫比乌斯函数是积性函数,其余积性函数的证明方法大同小异,留给读者自己尝试。介绍了较为重要的狄利克雷卷积概念,即两个积性函数间的一种基本运算,给出了一些性质以及推导结论,希望读者可以理解并自己推导,理解这些内容是大家迈向高阶数论的基石。

0x40反演,从最基础的欧拉反演、莫比乌斯反演出发,为大家列举了包括二项式反演、斯特林反演、单位根反演、子集反演、最值反演、拉格朗日反演等 “ 简单 ” 反演的基本性质定理以及部分推导出的 “ 常用 ” 结论,希望读者可以阅读以后自行证明。除此之外,还为大家列举了一些常用技巧,以及在求解积性函数时有奇效的 D i r i c h l e t \tt Dirichlet Dirichlet 前缀和的相关概念和实现代码。

0x50筛法,即积性函数的筛法,从基础的线性筛法拓展开来,介绍了复杂度较之线性筛更为优秀的杜教筛的相关证明及应用,并提供了更加优秀的 Min_25 筛、sieve 筛的基本模板和使用用法。

0x60原根,研究了正整数 n n n 的模 n n n 整数集中的乘法结构,介绍了模 n n n 整数的阶的基本性质,引出原根的概念。提供了原根的性质、求法、离散对数这一重要概念以及竞赛相关的一些简单应用,如原根在快速数论变换的应用以及证明。并讲解了前面遗留的第二种高次同余方程(N 次剩余)的解法。

0x70二次剩余,就是一个二次项 % p \%p %p 后的剩余。为大家讲解二次同余方程的相关性质解法,在竞赛中常有考察。

0x80某些非线性丢番图方程,前面介绍了丢番图方程的概念,并讲解了使用拓展欧几里得算法求解线性丢番图方程的方法以及代码实现。那么对于非线性的丢番图方程呢?一个广为人知的定理表明,并不存在一个适用于所有非线性丢番图方程的通用解法,人们在数百年的研究中得到了一些特殊的非线性丢番图方程的解法,例如著名的毕达哥斯拉三元组,费马大定理,佩尔方程,此部分竞赛涉及较少,但是不排除哪位出题人的兴致盎然,建议简要阅读了解相关定理解法。

0x90高斯整数,前面的章节,我们研究的都是整数集合的一些性质,有趣的是其他的一些数集中也存在着一些类似整数的性质。我们将数论拓展到复数集,也就是高斯整数,即形如 a + b i a+bi a+bi 的数。本章为大家讲解了一些数论概念在复数集上的拓展,例如高斯素数,高斯整数上的最大公约数、唯一分解定理,高斯整数环等相关概念,竞赛中略有涉及,建议了解相关概念即可。

0x100杂项,收录了一些不知道怎么分类的内容,说不定会有什么用… 例如幂级数的展开式大全,哥德巴赫猜想及其拓展,特征值法求递推式通项公式,预处理 x x x 的次幂 O ( 1 ) O(1) O(1) 计算等等。

​ 为了能使大家更好地运用这些知识,我基本上为每个算法都增加了一个竞赛例题选讲板块,优先选择算法经典例题、ICPC / CCPC 真题,并附上了我的详细题解以及部分题目代码,每道题目都给出了相应的题目编号,来源各大OJ,作为大家的课后练习。当然,仅凭这些例题是远远不够的,剩下的就需要大家自己上网检索高质量习题自行练习。

​ 希望大家可以认真阅读本篇文章,真正学会数论,学懂数论,爱上数论,希望本文能在大家的算法竞赛道路上提供帮助,助力大家实现自己的梦想。若真如此,本人荣幸之极。

​ 孟繁宇

​ 2021年1月29日于郑州家中书房

注:本文涵盖了编程竞赛相关的几乎所有数论知识,0x00 ~ 0x30 为基础数论知识,建议一定掌握,0x0x40 ~ 0x72 均为高阶数论知识,稍有难度,建议进阶的同学理解掌握,0x73 ~ 0x100为拓展内容,部分取自《初等数论及其应用》(机械工业出版社,原书第5版),考察频率较低,但还是建议阅读了解,属于选学内容。

目录

正文将视情况择机(看心情 )分批发布

正文内容太长,共十章,一百多小节,近五万字,近十五万字符,放到一块的话网页都快崩了 ~

  • 前言

  • 0x00 整除

  • 0x10 整除相关

    • 0x11 素数(质数)
      • 0x11.1 素数的判定
      • 0x11.2 素数的筛法
      • 0x11.3 反素数
    • 0x12 Z ∗ Z^* Z ( Z p ∗ , . ) (Z^*_p,^.) (Zp,.)结构
      • 0x12.1 唯一分解定理(分解质因子)
      • 0x12.2 Z ∗ Z^* Z 结构中的一些定理
      • 0x12.3 ( Z p ∗ , . ) (Z^*_p,^.) (Zp,.) 结构
    • 0x13 最大公因数与最小公倍数
      • 0x13.1 约数
      • 0x13.2 最大公约数
      • 0x13.3 最大公倍数
      • 0x13.4 GCD 与 LCM 的一些性质与定理
      • 0x13.5 补充知识: Fibonacc 数列及其推论
    • 0x14 互质与欧拉函数
      • 0x14.1 欧拉函数
      • 0x14.2 欧拉函数的性质
  • 0x20 同余

    • 0x21 整数的取余运算
      • 0x21.1 整数的取余运算(模运算)
      • 0x21.2 整数模意义下的加减乘乘方运算
      • 0x21.3 整数模意义下的除法运算
    • 0x22 同余
      • 0x21.1 同余的性质
      • 0x21.2 费马小定理
      • 0x21.3 欧拉定理
      • 0x21.4 威尔逊定理
    • 0x22 拓展欧几里德
      • 0x22.1 裴蜀(Bézout)定理
      • 0x22.2 解二元模线性方程
      • 0x22.3 扩展欧几里德算法
      • 0x22.4 类欧几里德算法(一个求和技巧)
      • 0x22.5 整式方程
    • 0x23 乘法逆元
      • 0x23.1 乘法逆元定义与性质
      • 0x23.2 费马小定理求乘法逆元
      • 0x23.3 扩展欧几里得求乘法逆元
      • 0x23.4 线性递推求乘法逆元
    • 0x24 线性同余方程
      • 0x24.1 同余方程
      • 0x24.2 中国剩余定理
      • 0x24.3 拓展中国剩余定理
    • 0x25 高次同余方程(一)
      • 0x25.1 BSGS算法
      • 0x25.2 拓展BSGS算法
  • 0x30 积性函数

    • 0x31 常见积性函数
    • 0x32 莫比乌斯函数
    • 0x33 狄利克雷卷积
  • 0x40 反演

    • 0x41 整除分块
    • 0x42 欧拉反演
    • 0x43 莫比乌斯反演
    • 0x44 二项式反演
    • 0x45 斯特林反演
    • 0x46 单位根反演
    • 0x47 子集反演
    • 0x48 最值反演 (Min-Max容斥)
    • 0x49 拉格朗日反演
    • 0x4A 反演常用技巧
    • 0x4B. Dirichlet 前缀和
      • 0x4B.1 Dirichlet 前缀和
      • 0x4B.2 Dirichlet 后缀和
      • 0x4B.2 倒推 Dirichlet 前缀和
      • 0x4B.3 倒推 Dirichlet 后缀和
  • 0x50 筛法

    • 0x51 线性筛法
      • 0x51.1 线性筛法求欧拉函数
      • 0x51.2 线性筛求莫比乌斯函数
      • 0x51.3 线性筛求约数个数函数
      • 0x51.4 线性筛求约数和函数
    • 0x52 杜教筛
      • 0x52.1 杜教筛
      • 0x52.2 求欧拉函数前缀和
      • 0x52.3 求莫比乌斯函数前缀和
    • 0x53 Min_25筛
    • 0x54 sieve筛
  • 0x60 原根

    • 0x61 整数的阶、原根与指标
      • 0x61.1 整数的阶
      • 0x61.2 整数的原根
      • 0x61.3 整数的指标(也称指数、离散对数)
    • 0x62 素数的原根
      • 0x62.1 多项式同余
    • 0x63 原根的存在性
    • 0x64 原根的应用
      • 0x64.1乘法换加法(取模意义下)
      • 0x64.2 快速数论变换
    • 0x65 高次同余方程(N次剩余)
  • 0x70 二次剩余

    • 0x71 二次剩余与二次非剩余
    • 0x72 Cipolla 算法解算法二次同余方程
    • 0x72 N 次剩余(N 次同余方程)
  • 0x80 某些非线性丢番图方程

    • 0x81 毕达哥斯拉三元组(勾股数)
    • 0x82 费马大定理
    • 0x83 平方和
    • 0x84 佩尔方程与连分数
      • 0x84.1 佩尔方程与连分数
      • 0x84.2 解佩尔方程
      • 0x84.3 竞赛例题选讲
  • 0x90 高斯整数

    • 0x90.0 复数

    • 0x91 高斯整数

    • 0x92 高斯素数

    • 0x93 唯一分解

    • 0x94 最大公约数

    • 0x95 同余和剩余系

    • 0x96 费马二平方和定理

    • 0x97 分解 4 k + 1 4k+1 4k+1 型素数

    • 0x98 构造 a 2 + b 2 = n a^2+b^2=n a2+b2=n 的方案

    • 0x99 竞赛例题选讲

  • 0x100 杂项

    • 0x101 哥德巴赫猜想及其拓展
    • 0x102 幂级数展开式常用公式
    • 0x103 各进制整数的位数
    • 0x104 判断组合数的奇偶性
    • 0x105 特征根法求数列通项公式
    • 0x106 预处理 x x x 的次幂
  • 0x110 后记

后记

​ 原本只是打算简单花费一天的时间整理一下我学过的数论知识,加上最近刚刚看完《初等数论及其应用》,以及部分的《具体数学》,学到了一些奇怪的新姿势,想要记录一下。发现最后越写越多,从最开始的五千字,一万字,写到了最后的四万五千字,十四万七千的字符,涵盖的内容也越来越多,我几乎翻遍了全网的数论博客,抽取出了很多人总结的经验之谈。为了使得整篇不那么枯燥,我为每个算法都精选了 经典例题 / ICPC / CCPC / NOIP / NOI 真题,并附上我的详细题解和部分代码。我现在几乎可以负责任地说:算法竞赛,数论相关,这一篇就够了

何止是够了,还多了好多好多

参考资料:

  • 《初等数论及其应用》

  • 《具体数学》

  • 《算法竞赛进阶指南》

  • 《简明数论》

  • 神O的数论全家桶

  • 数学笔记:数论

  • 【知识总结】数论全家桶

  • 初等数论学习笔记(一)sola

  • 莫比乌斯反演也是数论

  • ACM中的数学问题合集

  • ACM数论基本定理

  • 关于数论的一些总结

  • 数论总结

  • ACM数论总结

《算法竞赛中的初等数论》(信奥 / 数竞 / ACM)前言、后记、目录索引(十五万字符的数论书)_第2张图片

如果对本文感兴趣想要让我更新的话,可以在点赞后到评论区里文明催更,我将视情况(看心情 )更新

都是一些常见的数论知识,应该没什么人想看吧

今天发布这个索引文章,算是我给我自己的生日礼物?(雾

说明一下,本文是我在学习之余,花了一些时间整理的数论知识合集,也可以说是《初等数论及其应用》学习笔记,纯属个人乱搞,部分内容摘自《初等数论及其应用》、《具体数学》等相关数论书籍,或是互联网上各式各样的博客,增加了一些个人见解,自己喜欢的例题和分析,因为我太菜了,请大佬们轻虐,呜呜呜

因为算是一个个人向的知识例题模板整理,所以不是很想发出来,要是想看的人多我就发一下吧…

《算法竞赛中的初等数论》(信奥 / 数竞 / ACM)前言、后记、目录索引(十五万字符的数论书)_第3张图片

你可能感兴趣的:(算法全家桶!!!,《算法竞赛中的初等数论》)