首页 > 其他分享 >【数论基础】乘法逆元Ⅰ

【数论基础】乘法逆元Ⅰ

时间:2023-03-22 17:57:44浏览次数:24  
标签:数论 cdot ll pmod int 逆元 乘法

费马小定理求乘法求逆元

应用条件:当模数p为质数的时候

\(\because ax \equiv 1 \pmod{p}\)

由费马小定理可得:\(ax \equiv a^{p-1} \pmod{p}\)

\(\therefore x \equiv a^{p-2} \pmod{p}\)

至此,我们可以通过快速幂的方法来求乘法逆元了

inline ll inverse(ll a,ll p){
	ll res=1;
	ll b=p-2;
	a=(a%p+p)%p;
	for(;b;b>>=1){
		if(b&1) res=(a*res)%p;
		a=(a*a)%p;
	}
	return res;
} 

扩展欧几里得算法求逆元

应用条件:\(gcd(a,b)=1\)

证明

考虑以下a在模p意义下的乘法逆元b的定义: \(a\cdot b \equiv 1 \pmod{p}\)

更一般地,不难想到:\((b_{0} \cdot p+1)\pmod{p} = 1\)

又因为:\((a\cdot b) \mod{p} = 1\)

所以:\(a\cdot b + p\cdot b_{0} =1\)

因此我们可以用扩展欧几里得定理求出以上方程的\(b\)和\(b_{0}\),其中,b就是a在模p意义下的乘法逆元

void exgcd(int a, int b, int& x, int& y) {
  if (b == 0) {
    x = 1, y = 0;
    return;
  }
  exgcd(b, a % b, y, x);
  y -= a / b * x;
}

未完待续

费马小定理的证明and线性求逆元......

标签:数论,cdot,ll,pmod,int,逆元,乘法
From: https://www.cnblogs.com/mikufun4405/p/17244920.html

相关文章

  • 九九乘法表JS版
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title></title><styletype="text/css">span{dis......
  • tensorflow中高维数组乘法运算
    1前言声明:本博客里的数组乘法运算是指矩阵乘法运算,不是对应元素相乘。在线性代数或高等代数中,我们学习了矩阵乘法,那么,什么样的高维数组才能相乘?tensorflow又是如何定义......
  • Hate That You Know Me (15黑龙江省赛) (数学公式题)(数论分块) (前缀和,小的数学结论
      思路;遇到数学公式,一层一层剥开发现那个式子就是求n内的每一个数的倍数在n以内的数量,明显数论分块来处理这个问题然后就是因子的^2,^3,这个子问题......
  • d098 矩阵乘法
    #include<bits/stdc++.h>usingnamespacestd;#defineN1005intm,n,r;inta[N][N];intb[N][N];intc[N][N];intmain(){ cin>>m>>n>>r; for(inti=1;i<=m;......
  • 【数论与组合数学 2】同余、中国剩余定理
    同余、中国剩余定理一、同余(Congruence)1.令\(\mathsf{a,\b,\m}\)为整数,且$\mathsf{m\neq0}$。当满足\(\mathsf{m\mid(a-b)}\)时,称a与b模m同余,写......
  • 基于LS最小二乘法的数据拟合matlab仿真
    1.算法描述       最小均方算法,简称LMS算法,是一种最陡下降算法的改进算法,是在维纳滤波理论上运用速下降法后的优化延伸,最早是由Widrow和Hoff提出来的。该算......
  • c代码实现九九乘法表的打印
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(){inti=0;for(i=1;i<=9;i++){intj=0;for(j=1;j<=i;j++){printf(......
  • 数论入门
    一、素数筛和唯一分解1.素数判断我们可以从$2$到$p-1$一个一个试除,如果有能整除就不是素数,特判$1,2$就行了。但这样太慢了,我们知道$\foralln\inZ,n=k_1k_2.........
  • 九九乘法表的几种打印形式
    打印全部打印上三角11=212=3.....19=922=423=6...29=18........9*9=81#include<stdio.h>intmain(){ inti,j,k; for(i=1;i<=9;i++){ k=i-1; whil......
  • 数论学习笔记
    一、一些基本定义加性函数:\[\forallf\inAdd:\gcd(x,y)=1\impliesf(xy)=f(x)+f(y)\]完全加性函数:\[\forallf\inAdd^*:f(xy)=f(x)+f(y)\]积性函数:\[\forallf\in......