当前位置: 首页 > news >正文

[C++竞赛]数论

1. 整数与数论基础

  • 整除性

    • 定义:若 (a = b \times q)((a, b, q \in \mathbb{Z}),(b \neq 0)),则称 (b) 整除 (a),记作 (b \mid a)。
    • 性质:传递性、线性组合保持整除性等。
  • 最大公约数(GCD)与最小公倍数(LCM)

    • 欧几里得算法:高效计算 (\gcd(a, b)) 的递归方法,基于 (\gcd(a, b) = \gcd(b, a \bmod b))。
    • 扩展欧几里得算法:求解方程 (ax + by = \gcd(a, b)) 的整数解 ((x, y)),应用于解线性同余方程。
    • LCM与GCD关系:(\text{lcm}(a, b) = \frac{a \times b}{\gcd(a, b)})。
  • 算术基本定理

    • 唯一分解定理:任何大于1的整数可唯一分解为质数的幂次乘积,即 (n = p_1^{e_1} p_2^{e_2} \cdots p_k^{e_k})。
    • 应用:求约数个数、约数和、GCD/LCM的质因数分解表示等。

2. 同余理论

  • 模运算性质
    • 基本运算规则:((a \pm b) \bmod m = (a \bmod m \pm b \bmod m) \bmod m),乘法类似。
    • 逆元:若 (ax \equiv 1 \pmod{m}),则 (x) 为 (a) 模 (m) 的逆元,记作 (a^{-1})。存在条件:(\gcd(a, m) = 1)。
  • 线性同余方程
    • 形如 (ax \equiv b \pmod{m}) 的方程,解法:
      1. 检查 (\gcd(a, m) \mid b),否则无解。
      2. 用扩展欧几里得算法求特解,通解为 (x = x_0 + k \cdot \frac{m}{\gcd(a, m)})((k \in \mathbb{Z}))。
  • 中国剩余定理(CRT)
    • 求解同余方程组(模数两两互质):
      [
      \begin{cases}
      x \equiv a_1 \pmod{m_1} \
      x \equiv a_2 \pmod{m_2} \
      \vdots \
      x \equiv a_k \pmod{m_k}
      \end{cases}
      ]
      解为 (x \equiv \sum a_i M_i M_i^{-1} \pmod{M}),其中 (M = \prod m_i),(M_i = M/m_i),(M_i^{-1}) 为 (M_i) 模 (m_i) 的逆元。

3. 素数相关

  • 素数判定
    • 试除法:检查 (2) 到 (\sqrt{n}) 的整数是否整除 (n),适用于小规模数。
    • Miller-Rabin算法:概率性检测,基于费马小定理和二次探测定理,时间复杂度 (O(k \log^3 n))((k) 为测试轮数)。
  • 素数筛法
    • 埃拉托斯特尼筛法:标记合数,时间复杂度 (O(n \log \log n))。
    • 线性筛(欧拉筛):每个合数仅被最小质因子筛除,时间复杂度 (O(n)),可同时求积性函数。
  • 费马小定理
    • 若 (p) 为素数且 (\gcd(a, p) = 1),则 (a^{p-1} \equiv 1 \pmod{p})。
    • 应用:快速计算模逆元(当 (p) 为素数时,(a^{-1} \equiv a^{p-2} \pmod{p}))。

4. 积性函数与数论函数

  • 常见积性函数
    • 欧拉函数 (\varphi(n)):小于 (n) 且与 (n) 互质的数的个数。若 (n = \prod p_i^{e_i}),则 (\varphi(n) = n \prod \left(1 - \frac{1}{p_i}\right))。
    • 莫比乌斯函数 (\mu(n)):依据质因数分解的指数性质取值(含平方因子时为0,否则为 ((-1)^k),(k) 为质因子个数)。
    • 约数函数 (\sigma_k(n)):所有约数的 (k) 次幂和(如 (\sigma_0(n)) 为约数个数)。
  • 迪利克雷卷积
    • 定义:((f * g)(n) = \sum_{d \mid n} f(d) g(n/d))。
    • 性质:积性函数的卷积仍为积性函数。

5. 离散对数与原根

  • 离散对数问题(BSGS算法)
    • 求解 (a^x \equiv b \pmod{p})((p) 为素数):Baby-Step Giant-Step算法将问题转化为 (O(\sqrt{p})) 时间复杂度的搜索。
  • 原根
    • 定义:若 (g) 模 (m) 的阶为 (\varphi(m)),则 (g) 为模 (m) 的原根。
    • 存在性:模 (m) 有原根当且仅当 (m = 2, 4, p^k, 2p^k)((p) 为奇素数)。

6. 二次剩余与Legendre符号

  • 二次剩余
    • 定义:若存在 (x) 使得 (x^2 \equiv a \pmod{p})((p) 为奇素数),则 (a) 为模 (p) 的二次剩余。
  • Legendre符号
    • (\left(\frac{a}{p}\right) = a^{(p-1)/2} \pmod{p}),取值:1(是剩余)、-1(非剩余)、0((p \mid a))。
  • Tonelli-Shanks算法:求解二次同余方程 (x^2 \equiv a \pmod{p}) 的根。

7. 常见数论算法与技巧

  • 快速幂与矩阵快速幂
    • 计算 (a^b \bmod m) 的 (O(\log b)) 方法,应用于大指数运算。
  • 卢卡斯定理(Lucas Theorem)
    • 组合数模小素数:(\binom{n}{k} \equiv \prod \binom{n_i}{k_i} \pmod{p})((n_i, k_i) 为 (n, k) 的 (p) 进制表示)。
  • Pollard’s Rho算法
    • 大整数分解的随机算法,时间复杂度约 (O(n^{1/4}))。

典型例题与考点

  1. GCD与扩展欧几里得:求解线性同余方程或优化路径问题。
  2. 中国剩余定理:密码学中的模数转换或周期性事件同步。
  3. 素数筛法:预处理质数表用于高效查询。
  4. 逆元与组合数:计算大模数下的组合数(如 (\binom{n}{k} \bmod 10^9+7))。
  5. 离散对数:哈希冲突或密码学问题。

掌握这些内容需要结合理论推导和代码实现(如快速幂、筛法、CRT等模板),建议通过经典题目(如洛谷、Codeforces的数论题)巩固知识点。

http://www.lryc.cn/news/608068.html

相关文章:

  • 深入 Go 底层原理(十三):interface 的内部表示与动态派发
  • [硬件电路-113]:模拟电路 - 信号处理电路 - 二极管的应用 - 精密整流电路与波形
  • sqli-labs:Less-18关卡详细解析
  • Json Jsoncpp
  • hyper-v实战系列:第一代虚拟机转第二代步骤
  • 深入理解 Docker 容器网络:为什么用 host 网络模式能解决连通性问题?
  • yolo 、Pytorch (5)IOU
  • Git、Gitee、GitHub、GitLab完整讲解:从基础到进阶
  • web:js的模块导出/导入
  • 开疆智能Profinet转Modbus网关连接信捷PLC从站配置案例
  • K8S部署ELK(二):部署Kafka消息队列
  • 深入 Go 底层原理(六):垃圾回收(GC)
  • ubuntu22.04离线一键安装gpu版docker
  • 开源列式分布式数据库clickhouse
  • pyqt5显示任务栏菜单并隐藏主窗口,环境pyqt5+vscode
  • CS课程项目设计7:基于Canvas交互友好的五子棋游戏
  • 从AI智能体出发,重构数据中台:迈向Agentic时代的数据能力体系
  • Docker容器中文PDF生成解决方案
  • Oracle 11gR2 Clusterware应知应会
  • 分布式事务----spring操作多个数据库,事务以及事务回滚还有用吗
  • Oracle 11g RAC集群部署手册(二)
  • Token系列 - 再谈稳定币
  • mac 安装pytho3 和pipx
  • 讲一讲Spring核心三大组件IOC、Bean、AOP
  • 我的世界模组开发教程——物品item(1)
  • Vuex 4.0:Vue.js 应用的状态管理新篇章
  • 深度学习核心:神经网络-激活函数 - 原理、实现及在医学影像领域的应用
  • K8S部署ELK(一):部署Filebeat日志收集器
  • SCI 绘图实用 RGB 配色方案:多组比较
  • [Windows] 微软.Net运行库离线合集包 Microsoft .Net Packages AIO v13.05.25