除法取模逆元,扩展欧几里得,费马小定理[数学]
2017-02-12 20:51
316 查看
一、除法取模逆元
在算法设计中,常会遇到求 a/b mod m的计算,当a很大,或者b很大,使得a/b的值无法直接计算的时候,通常采用逆元的方法,化除法为乘法。(逆元的概念在离散数学中 有学习)
a/b mod m 等价计算为 a*k mod m (k是b的模m乘法逆元)
证明过程:
由于k是b的模m乘法逆元。 即 b*k mod m == 1
b*k = xm + 1
k = (xm+1) / b
则 a * k mod m = a * (xm + 1) / b mod m
= a/b * (xm + 1) mod m
= xa/b * m mod m + a / b mod m
= a / b mod m
所以以上两式等价。
二、扩展欧几里得
欧几里得定理, gcd(a, b)用来求a,b的最大公约数。 gcd(a, b) = gcd(b, a%b) = gcd
扩展欧几里得定理:
对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。
c++描述:
通过扩展欧几里得定理,可以求出b的模m乘法逆元。
由于 b*k mod m == 1 所以 b*k + m*n == 1 即求解方程中的k即可得到逆元 即函数中的x就是其逆元。
三、费马小定理
假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod
p)
如果求解 a / b mod m 求 b 的模m乘法逆元,若b , m互质
则 k* b mod m = 1 且 b ^ (m-1) mod m = 1 所以 k* b = b ^ (m-1)
可直接得出b的模m乘法逆元为 b ^ (m-2)
在算法中常模1e9+7为质数,可用费马小定理转换。
在算法设计中,常会遇到求 a/b mod m的计算,当a很大,或者b很大,使得a/b的值无法直接计算的时候,通常采用逆元的方法,化除法为乘法。(逆元的概念在离散数学中 有学习)
a/b mod m 等价计算为 a*k mod m (k是b的模m乘法逆元)
证明过程:
由于k是b的模m乘法逆元。 即 b*k mod m == 1
b*k = xm + 1
k = (xm+1) / b
则 a * k mod m = a * (xm + 1) / b mod m
= a/b * (xm + 1) mod m
= xa/b * m mod m + a / b mod m
= a / b mod m
所以以上两式等价。
二、扩展欧几里得
欧几里得定理, gcd(a, b)用来求a,b的最大公约数。 gcd(a, b) = gcd(b, a%b) = gcd
扩展欧几里得定理:
对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。
c++描述:
void exgcd(int a, int b, int &x, int &y) { if(0 == b){ x = 1, y = 0; return ; } exgcd(b, a%b, x, y); int flag = x; x = y; y = flag - a/b * y; }
通过扩展欧几里得定理,可以求出b的模m乘法逆元。
由于 b*k mod m == 1 所以 b*k + m*n == 1 即求解方程中的k即可得到逆元 即函数中的x就是其逆元。
三、费马小定理
假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod
p)
如果求解 a / b mod m 求 b 的模m乘法逆元,若b , m互质
则 k* b mod m = 1 且 b ^ (m-1) mod m = 1 所以 k* b = b ^ (m-1)
可直接得出b的模m乘法逆元为 b ^ (m-2)
在算法中常模1e9+7为质数,可用费马小定理转换。
相关文章推荐
- BZOJ1951 [Sdoi2010]古代猪文 【费马小定理 + Lucas定理 + 中国剩余定理 + 逆元递推 + 扩展欧几里得】
- 除法求逆元(扩展欧几里德和费马小定理)
- 逆元的几种求法(扩展欧几里得,费马小定理或欧拉定理,特例,打表等)
- 除法求逆元(扩展欧几里德和费马小定理)
- 求组合数取模(杨辉三角打表 & 求逆元(扩展欧几里得、费马小定理、欧拉定理、线性求法) & Lucas)
- 逆元的几种求法(扩展欧几里得,费马小定理或欧拉定理,特例,打表等)
- 除法求逆元(扩展欧几里德和费马小定理)
- 数论 —— 逆元(费马小定理/扩展欧几里得)
- 【数学/扩展欧几里得/线性求逆元】[Sdoi2008]沙拉公主的困惑
- 【数学/扩展欧几里得/线性求逆元】[Sdoi2008]沙拉公主的困惑
- 乘法逆元 (扩展欧几里得或费马小定理)
- 扩展欧几里得、逆元、线性同余方程组、中国剩余定理总结
- HDOJ A/B 1576【扩展欧几里得+求逆元】
- 数论-hdu-1576-A/B-逆元-扩展欧几里得
- 【科技】扩展欧几里得 + 逆元
- hdoj 1576 A/B [扩展欧几里得.逆元]
- 关于逆元(证明扩展欧几里得定理)
- csu1163扩展欧几里得之乘法逆元
- 乘法逆元(扩展欧几里得或费马小定理)
- 【线段树/数学/扩展欧几里得】 Bzoj 3913:奇数国