首页 > 其他分享 >浅谈同余1(常用定理和乘法逆元)

浅谈同余1(常用定理和乘法逆元)

时间:2023-05-21 12:44:44浏览次数:51  
标签:浅谈 pmod bmod varphi times int 逆元 同余 equiv

点个赞吧,球球了~

下一篇:$浅谈同余2(扩展欧几里得,中国剩余定理,BSGS)$

https://www.acwing.com/file_system/file/content/whole/index/content/7882318/

 

$\LaTeX$太多了,分成几个部分
0x00 总写(瞎说)

同余是数学中非常重要的东西,这里会写出同余的基本运用

若$a \bmod m = b \bmod m$则称$a, b$模$m$同余,记做$a \equiv b \pmod m$

0x10 欧拉定理和推论,费马小定理
欧拉定理:
若正整数$a, n$互质,则$a^{\varphi {(n)}} \equiv 1 \pmod n$

不会证明

费马小定理:
若$p$是质数,则对于任意正整数$a$,有$a ^ p \equiv a \pmod p$

欧拉定理左右两边乘上$p$就是费马小定理

欧拉定理的推论
若正整数$a, n$互质,则对于任意正整数$b$,有$a^b \equiv a ^ {b \bmod {\varphi ( n )}} \pmod n$

证明:
设$b = q \times \varphi ( n ) + r$ , 其中$0\le r \lt \varphi ( n )$, 即$r = b \bmod \varphi ( n )$
于是:$a^b \equiv a^{q \times \varphi ( n ) + r} \equiv ( a ^ {{\varphi ( n) } ^ q} ) \times {a ^ r} \equiv {1 ^ q \times {a^r}} \equiv a ^ r \equiv a ^ {b \bmod \varphi ( n )} \pmod n$
证毕

所以乘方级的取模为:$a \bmod n ^ {b \bmod \varphi(n)}$

0x10 乘法逆元
若正整数$b, m$互质,并且$b|a$, 则存在一个整数$x$, 使得$a \div b \equiv a \times x \pmod m$
称$x$为$b$的模$m$乘法逆元,记做$b^{-1\} \pmod m $
因为$a \div b \equiv a \times b ^ {-1} \equiv a \div b \times b \times b ^ {-1} \pmod m$,所以$b\times b^{-1} \pmod m$

如果$m$是质数并且$b<m$,根据费马小定理,$b^{m - 1} \equiv 1 \pmod m$,即$b\times b^{p-2} \equiv 1 \pmod m$
因此,当模数$m$为质数时,$b^{m - 2}$即为$b$的乘法逆元,可以用快速幂来解决

$Code$:

int gcd(int a, int b) {
    return a % b == 0 ? b : gcd(b, a % b);
}

int fast_power(int a, int b, int p) {
    if (gcd(a, p) > 1) return -1;
    
    a %= p;
    int res = 1;
    
    while (b) {
        if (b & 1) res = res * a % p;
        
        b >>= 1;
        a = a * a % p;
    }
    
    return res;
}

t = fast_power(a, p - 2, p);

 

但是当$m$不是质数且$b, m$互质时,费马小定理不再适用,要用扩展欧几里得算法计算同余方程
$b \times x \equiv 1 \pmod m$

线性求$1 \sim n$乘法逆元

$inv(i) = -\lfloor \frac{p}{i} \rfloor \times inv(p \bmod i) \bmod p$

证明有空补
只能用这种方法,别的算法都比这些要求一串要慢。

#### $Code$:

res[1] = 1;
for (int i = 2; i <= n; i ++ ) {
    res[i] = (long long)(p - p / i) * res[p % i] % p;
    printf("%lld\n", res[i]);
}

 

标签:浅谈,pmod,bmod,varphi,times,int,逆元,同余,equiv
From: https://www.cnblogs.com/xyy-yyds/p/17418458.html

相关文章

  • 浅谈物联网平台的重要性以及建设展望
    随着物联网(InternetofThings,简称IoT)技术的快速发展,物联网平台已成为连接各种设备,处理大量数据,并为用户提供智能服务的关键工具。在此背景下,深入理解物联网平台的重要性,以及对其未来建设的展望显得尤为重要。物联网平台在链接设备、管理数据以及提供服务等方面具有重要价值:在设......
  • [基础数论]同余方程笔记
    前言在学习本节内容前,请确保已完成了二元不定方程的学习。同余方程有无解的判别对于一个方程形如:\[ax\equivb\pmodm\]其中\[a,b\in\mathbbZ,m\in\mathbbZ^+\]并令\[d=(a,m)\]若\(d\nmidb\),则方程\(ax\equivb\pmodm\)无解。若\(d\midb\),......
  • 同余的基本性质
    同余的基本性质注:这里默认$a,b,c,d\in\mathbb{Z},m,k,d\in\mathbb{Z}^+$若$a_1\equivb_1\pmodm$,\(a_2\equivb_2\pmodm\),则\(a_1\pma_2\equivb_1\pmb_2\pmodm\).若$a_1\equivb_1\pmodm$,\(a_2\equivb_2\pm......
  • 浅谈 OI 中各种合并操作
    前言合并操作一直是OI中一大考点,今天请各位跟着笔者来梳理一下各种合并操作。启发式合并几乎可以说是最经典的合并了。假定我们可以在\(O(k)\)的时间内往某个集合中插入一个数,那么我们就可以在\(O(n\lognk)\)的时间内合并若干个元素总量为\(n\)的集合。集合启发式......
  • 浅谈一类信息的暴力重构手法
    loj#6515.「雅礼集训2018Day10」贪玩蓝月背包支持类似栈的加入与撤销(由于是最优化,不太能直接删除),而题目要求维护双端队列式的操作,这是一个经典问题——双栈模拟双端队列(也叫bakatrick)。直接给出方法:维护两个栈,两栈的拼接即为我们维护的队列,照常进行大部分操作,若某一栈在空......
  • 在线 $\Theta(1)$ 逆元
    //createdon23.04.30目录在线O(1)逆元在线O(1)逆元给定质数模数\(p\),多次查询一个数\(a\)的逆元,强制在线。我们有一个\(O(p^{\frac{2}{3}})\)的预处理,\(O(1)\)查询的做法。Farey序列即\(F_n\)表示所有分母不超过\(n\)的最简真分数构成的有序数列(左右端......
  • 初等数论——素数,逆元,EXGCD有关
    初等数论素数定义设整数\(p\ne0,\pm1\)。如果\(p\)除了平凡约数以外没有其他约数,那么称\(p\)为素数(不可约数)。若整数\(a\ne0,\pm1\)且\(a\)不是素数,则称\(a\)为合数。——————OIWiki素数的判定(素性测试)如何判断一个数\(x\)是不是质数?很显然我们可......
  • 浅谈Java SE、Java EE、Java ME三者的区别
    现在一个个来分析 1.JavaSE(JavaPlatform,StandardEdition)。JavaSE以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。JavaSE包含了支持JavaWeb服务开发的类,并为JavaPlatform,EnterpriseEdition(JavaEE)提供基础。 2.Java......
  • 浅谈Javascript 中几种克隆(clone)方式
    一:在Javascript里,如果克隆对象是基本类型,我们直接赋值就可以了:Js代码varsStr="kingwell";varcStr=sStr;alert(cStr);//输出kingwellsStr="abc";alert(cStr);//输出kingwell; 把一个值赋给另一个变量时,当那个变量的值改变的时候,另一个值不会受到影响。 ......
  • 在线 $\Theta(1)$ 逆元
    最近看到这个题,想到了一种比较简单的做法。首先,我们考虑给\(x\)乘以一非零整数\(u\),如果我们能求出\(\frac{1}{xu}\),我们就可以通过再乘以\(u\)得到答案。考虑让\(u\)和\(xu\bmodp\)比较接近\(0\),预处理\(|k|\)比较小的所有\(\frac{1}{k}\)。考虑分块:设\(x=......