【数学-简单数论】同余中的逆

**同余中的逆(乘法逆元)**是连接CSP-J和CSP-S的重要概念,理解它会让你的数论知识更成体系。

下面我为你系统讲解"逆"是什么、怎么求、以及CSP-J/CSP-S中可能出现的典型例题。

一、什么是乘法逆元?

1.1 从"倒数"说起

1.2 举个具体例子

二、逆元存在的条件(重点!)

核心定理:

a 在模 m 下存在乘法逆元 ⇔ gcd(a, m) = 1(a 和 m 互质)

为什么?

方程 ax≡1(modm)ax≡1(modm) 等价于 ax−my=1ax−my=1,即 ax+my=1ax+my=1。

根据裴蜀定理,这个方程有整数解当且仅当 gcd(a, m) | 1,即 gcd(a, m) = 1。

特例: 当模数 m 是质数 p 时,只要 a 不是 p 的倍数,就一定有逆元。

判断练习:

a m gcd(a,m) 是否有逆元
3 10 1 ✅ 有
2 10 2 ❌ 无
4 9 1 ✅ 有
6 9 3 ❌ 无
7 13 1 ✅ 有

三、求逆元的三种方法

方法1:枚举法(适合小模数)

适用场景: m 很小(CSP-J级别)

步骤: 从 1 到 m-1 枚举 b,检查 a×b≡1(modm)a×b≡1(modm)

cpp 复制代码
int inv(int a, int m) {
    for (int b = 1; b < m; b++) {
        if ((a * b) % m == 1) return b;
    }
    return -1;  // 不存在逆元
}

例题: 求 4 在模 9 下的逆元。

  • 枚举:4×1=4,4×2=8,4×3=12≡3,4×4=16≡7,4×5=20≡2,4×6=24≡6,4×7=28≡1 ✓
  • 答案:7

方法2:扩展欧几里得算法(CSP-S要求)

原理: 求 ax+my=1ax+my=1 的一组整数解,x 就是 a 的逆元。

cpp 复制代码
// 扩展欧几里得:返回 gcd(a,b),同时求出 ax + by = gcd(a,b) 的一组解
int exgcd(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1; y = 0;
        return a;
    }
    int x1, y1;
    int g = exgcd(b, a % b, x1, y1);
    x = y1;
    y = x1 - (a / b) * y1;
    return g;
}

// 求 a 在模 m 下的逆元(要求 gcd(a,m)=1)
int modInv(int a, int m) {
    int x, y;
    int g = exgcd(a, m, x, y);
    if (g != 1) return -1;  // 不存在逆元
    return (x % m + m) % m;  // 保证结果为正
}

方法3:费马小定理(模数为质数时)

cpp 复制代码
// 用快速幂求 a^{p-2} mod p
int modInv(int a, int p) {
    return quickPow(a, p-2, p);  // p 必须为质数
}

四、逆元的核心应用

应用1:解同余方程

应用2:模意义下的除法

应用3:组合数取模(CSP-S重点)

五、CSP-J 典型例题(概念判断型)

例题1(存在性判断)

题目: 在模 8 的意义下,下列哪个数存在乘法逆元?

A. 2  B. 3  C. 4  D. 6

答案:B

解析: 存在逆元 ⇔ gcd(a,8)=1

  • gcd(2,8)=2 ❌

  • gcd(3,8)=1 ✅

  • gcd(4,8)=4 ❌

  • gcd(6,8)=2 ❌

选B。

例题2(同余方程)

题目: 同余方程 5x≡3(mod7)5x≡3(mod7) 的解是( )

A. 1  B. 2  C. 3  D. 4

答案:B

解析: 5 在模 7 下的逆元是 3(5×3=15≡1)

x ≡ 3×3 = 9 ≡ 2 (mod 7)

验证:5×2=10≡3 ✓

选B。

例题3(模运算变形)

题目: 已知 a≡2(mod5)a≡2(mod5),b≡3(mod5)b≡3(mod5),则 a×(mod5) 的值为( )

A. 1  B. 2  C. 3  D. 4

答案:D

解析: 3 在模 5 下的逆元是 2(3×2=6≡1)

a × ≡ 2 × 2 = 4 (mod 5)

选D。

相关推荐
数模竞赛Paid answer1 天前
2026年中青杯数学建模A题数学建模论文智能评估系统与多智能体优化方法求解全过程论文及程序
算法·数学建模·中青杯
银-豆豆1 天前
数据结构与算法-动态规划、回溯与贪心
算法·动态规划
想吃火锅10051 天前
【leetcode】200. 岛屿数量
算法·leetcode·职场和发展
Nil2081 天前
leetcode 54螺旋矩阵
算法·leetcode·矩阵
依然鸣1 天前
PTA团体程序设计天梯赛L1真题讲解L1-077-080
开发语言·c++·算法·深度优先·pat考试·图论
qeen871 天前
【数据结构】自平衡二叉搜索树各种旋转算法原理解析及AVL树的C++实现
数据结构·c++·算法
lucas_AI1 天前
1.2B 小模型赢过 235B 大模型:NaviDC-OCR 把文档解析卷明白了
人工智能·深度学习·算法
冻柠檬飞冰走茶1 天前
PTA基础编程题目集 7-35有理数均值(C++语言实现)
开发语言·数据结构·c++·算法·均值算法
民乐团扒谱机1 天前
【微实验】倒谱算法(Cepstrum)深度解析:原理、数学推导与代码实现
人工智能·算法·语音识别
Nil2081 天前
leetcode 189轮转数组
数据结构·算法·leetcode