[C++竞赛]数论

鸣谢 :感谢@副懿(ID:2503_91588017)帮忙修改本文错误的LaTeX


NOI(全国青少年信息学奥林匹克竞赛) 考纲中的数论部分涵盖了多个重要知识点,主要考察选手对整数性质、模运算、同余理论及算法的理解和应用能力。以下是数论内容的详细分类和说明:


1. 整数与数论基础

  • 整除性

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

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

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

2. 同余理论

  • 模运算性质
    • 基本运算规则:((a±b) mod m=(a mod m±b mod m) mod m)((a \pm b) \bmod m = (a \bmod m \pm b \bmod m) \bmod m)((a±b)modm=(amodm±bmodm)modm),乘法类似。
    • 逆元:若 (ax≡1(modm)(ax \equiv 1 \pmod{m}(ax1(modm)),则 (x)(x)(x)(a)(a)(a)(m)(m)(m) 的逆元,记作 (a−1)(a^{-1})(a1)。存在条件:(gcd⁡(a,m)=1)(\gcd(a, m) = 1)(gcd(a,m)=1)
  • 线性同余方程
    • 形如 (ax≡b(modm))(ax \equiv b \pmod{m})(axb(modm)) 的方程,解法:
      1. 检查 (gcd⁡(a,m)∣b)(\gcd(a, m) \mid b)(gcd(a,m)b),否则无解。
      2. 用扩展欧几里得算法求特解,通解为 (x=x0+k⋅mgcd⁡(a,m))((k∈Z))(x = x_0 + k \cdot \frac{m}{\gcd(a, m)})((k \in \mathbb{Z}))(x=x0+kgcd(a,m)m)(kZ)
  • 中国剩余定理(CRT)
    • 求解同余方程组(模数两两互质):
      [{x≡a1(modm1)x≡a2(modm2)⋮x≡ak(modmk)] [ \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} ] [xa1(modm1)xa2(modm2)xak(modmk)]
      解为 (x≡∑aiMiMi−1(modM))(x \equiv \sum a_i M_i M_i^{-1} \pmod{M})(xaiMiMi1(modM)),其中 (M=∏mi),(Mi=M/mi),(Mi−1(M = \prod m_i),(M_i = M/m_i),(M_i^{-1}(M=mi)(Mi=M/mi)(Mi1) 为 (Mi)(M_i)(Mi)(mi)(m_i)(mi) 的逆元。

3. 素数相关

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

4. 积性函数与数论函数

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

5. 离散对数与原根

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

6. 二次剩余与Legendre符号

  • 二次剩余
    • 定义:若存在 (x)(x)(x) 使得 (x2≡a(modp))(x^2 \equiv a \pmod{p})(x2a(modp))(p)(p)(p) 为奇素数),则 (a)(a)(a) 为模(p)(p)(p) 的二次剩余。
  • Legendre符号
    • ((ap)=a(p−1)/2(modp))((\frac{a}{p}) = a^{(p-1)/2} \pmod{p})((pa)=a(p1)/2(modp)),取值:111(是剩余)、−1-11(非剩余)、000(p∣a)(p \mid a)(pa))。
  • Tonelli-Shanks算法:求解二次同余方程 (x2≡a(modp))(x^2 \equiv a \pmod{p})(x2a(modp)) 的根。

7. 常见数论算法与技巧

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

典型例题与考点

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值