基础数论知识总结

这篇博客总结了基础数论知识,包括费马小定理在乘法逆元的应用,扩展欧几里得算法的真解,欧拉函数的性质,同余与模的运算法则,容斥定理的实现,矩阵运算,康托展开及逆运算,错排原理和Lucas定理。通过实例解析和代码展示,深入浅出地探讨了这些概念在数论和算法中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.  费马小定理与扩展欧几里得在乘法逆元上的运用

费马小定理

a phi(n)1 1(modn) 

扩展欧几里得

ax1(modn) 

乘法逆元

针对 ba modn  这种除法取模,将它转换为乘法取模,我们需要用到之前的费马小定理和扩展欧几里得,这两种方法都可以将除法取模变为乘法取模,什么时候用哪种,后续会说到

费马小定理处理乘法逆元

f(n)=ba modn(1) 

a phi(n)1 1(modn)(2) 

1=h(n)=a phi(n)1 modn(3)(2) 

f(n)  h(n)  相乘可以得到如下公式:
f(n)h(n)=f(n)1=ba phi(n)2 modn(4) 

其中 phi(n)  为欧拉函数即小于n并且与n互质的个数
如果 n  为质数的话, phi(n)  很明显为 n1  ,因为任意正整数都要质数互质,所以公式就变成了 ba n2  
如此我们就可以通过快速幂来处理 ba n2  

扩展欧几里得处理乘法逆元

f(n)=ba modn(1) 

ax1(modn)(2) 

1=h(n)=axmodn(3)(2) 

f(n)  h(n)  相乘可以得到如下公式:
f(n)h(n)=f(n)1=bxmodn(4) 

求出 x  后就可以将 ba modn  求出.

在求解 x  的过程中 (2)  式可以看成是 ax+ny=1  .

ax1(modn)(2) 

axny=1(5)(2) 

ax+ny=1(6)(5) 

(6)  式可以看出要想 x  y  存在整数解 gcd(a,b)  必须等于 1 

不管是费马小定理还是扩展欧几里得如果要进行乘法逆元的话必须要满足一个条件 gcd(a,n)==1  a  n  必须要互质否则两个公式都是不能够使用的. [  扩展欧几里得算法下述有讲解 ] 

何时使用处理乘法逆元

1.  n  为质数的时候一般用费马小定理,因为 b n2 modn 

2.  当时间限制比较紧的时候使用费马小定理,因为它可以使用快速幂进行求解

3.  其它的情况则是依照题目要求而定,当然,使用费马小定理处理乘法逆元的比较多,扩展欧几里得在求解方程式的整数解上有着强大的作用


2.  扩展欧几里得真解

欧几里得算法

在讲解扩展欧几里得之前
讲解欧几里得算法是必要的,所谓的欧几里得即求解最大公约数。
算法代码:

/*
    作用:求解最大公约数(欧几里得)
    方法:辗转相除法
*/
int gcd(int a, int b){
    return b ? gbc(b, a % b) : a;
}

扩展欧几里得算法

扩展欧几里得可以求解出 ax+by=gcd(a,b)  中一个满足方程式的 [  整数 ]  特解

g=gcd(a,b)(1) 

ax+by=g(2) 

bx1+(amodb)y1=g(3) 

我们需要针对 (2)  (3)  找出他们之间的规律
很明显
amodb=aab 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值