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

**同余中的逆(乘法逆元)**是连接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。

相关推荐
凯瑟琳.奥古斯特2 小时前
力扣1009补码解法C++实现
开发语言·c++·算法·leetcode·职场和发展
KaMeidebaby2 小时前
卡梅德生物技术快报|蛋白的叠氮基修饰:实操解析:核酸模板耦合蛋白的叠氮基修饰实现靶蛋白定点共价标记
前端·人工智能·物联网·算法·百度
通信仿真爱好者3 小时前
第【60期】--大规模MIMO系统信号检测算法误码率比较 --matlab完整代码+参考文章
算法·matlab·mimo·信号检测
AI科技星3 小时前
全域谱分析:无穷维超复数信息场分形统一场论——自然、量子、金融多重分形第一性原理完整体系(中英双语终稿)
人工智能·python·算法·金融·乖乖数学·全域数学
先吃饱再说4 小时前
为什么堆能 O(log n) 插入?拆解完全二叉树的数组魔法
算法·排序算法
留白_5 小时前
【决策树】泰坦尼克号生存预测
算法·决策树·机器学习
hqzing5 小时前
鸿蒙 PC 底层开发技术详解(七):二进制自签名算法的实现
算法·华为·harmonyos
AI科技星5 小时前
超复数全域经济周期场与信息谱场——金融与密码学底层理论重构《0·1·∞三元一体全域超复数统一场论》系列全集(六一字不漏完整合订终版)
人工智能·算法·金融·密码学·拓扑学·乖乖数学·全域数学
Let's Chat Coding5 小时前
哈希算法:密码学的基础构件
算法·哈希算法