• jQuery火箭图标返回顶部代码


    [ ext{乘法逆元} ]

    学习博客

    定义:

    这是来自大佬博客的:
    对于缩系中的元素,每个数(a)均有唯一的与之对应的乘法逆元(x),使得(ax equiv 1 (mod n)),一个数有逆元的充分必要条件是(gcd(a,n)=1),此时逆元唯一存在

    求逆元的几种方法
    1.扩展欧几里得算法

    (a)的逆元是(x)(x)满足(axequiv1),因为除法的实质是减法所以,方程也可以写为(ax-my=1),求得一组解之后判断(gcd(x,y))是否是一,如果不是则说明不是,因为我们用(exgcd)求得就是一组最小解了。如果是,则需调整(x)到相应范围((0到m-1))
    Code:

    int exgcd(int a, int b, int & x, int & y) {
    	if(!b) {x = 1, y = 0; return;}
    	int d = exgcd(b, a % b, y, x);
    	y -= a / b * x;
    	return d;
    }
    int inv(int a, int n) {
    	int x, y;
    	int d = exgcd(a, n, x, y);
    	return d == 1 ? (x + n) % n : -1;
    }
    
    费马小定理:

    是欧拉定理的一种特殊情况
    (a^{p-1}equiv1(mod p))
    (a^{p-2}equiv a^{-1}(mod p))
    除以一个数等于乘上这个数的逆元
    除以一个数等于乘他的倒数,而此时的指数为(-1)正好就是他的倒数,也就是他的逆元
    需要检验求出的幂值(x)(a)相乘是否为(1)
    Code:

    int power(int x, int y) {
    	int sum = 1;
    	while(y) {
    		if(y & 1) sum = (sum * x) % md;
    		x = (x * x) % md;
    		y >>= 1;
    	}
    	return sum;
    }
    
    补充一下:

    有一个定西叫做求逆元一般公式
    (x=a/b mod m = x mod (m *b)/b)

    简单证明:

    (frac{a}{b} mod k = d)
    (frac{a}{b}= kx+d)
    (a=kbx+bd)
    (a mod kb=bd)
    (frac{a mod kb}{b}=d)

    因为这个式子里有(k*b)需要注意一下他俩很大的时候

    还是费马小比较的好写qwq

    谢谢收看,住身体健康!

  • 相关阅读:
    项目管理5大过程9大知识域44个定义
    linux centos6.5 修改ip地址
    .Net 6 已知问题集
    第二次阅读作业——程志
    采访大四学长整理笔记
    c#
    团队作业三两感想 by 程志
    搞定3G上网
    高焕堂Android應用框架原理與程式設計代码补遗(一)
    要素类属性内容全角换半角
  • 原文地址:https://www.cnblogs.com/yanxiujie/p/11750269.html
Copyright © 2020-2023  润新知