一些数学知识&题
欧几里得算法
费马小定理
当a,p都是是质数时,a^(p-1)=1(mod p)
证明:
举个例子 a=2,p=5;
1,2,3,4 集合(1) {1,2,3,4...,(p-1)}
2,4,6,8 => %5 => 2,4,1,3 集合(2) {1a%p,2a%p,3a%p,4a%p...,(p-1)a%p}
我们发现{1,2,3,4}和{2,4,1,3}只是位置不同,成积相同
怎么个一定乘积相同法?
反证法:
首先(1)一定不会有相同,(2)的证法如下
ai=aj (mod P) => a(i-j)=0 (mod p) => p|a(i-j) 这可能吗?p是质数
证毕
裴属定理
证明:c|ax,c|by,所以c|ax+by,证毕:)
求逆元(老重要了!!!)
- 扩展欧几里得算法
求的是ax+by=1,中的x
点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n,m;
int exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1;
y=0;
return a;
}
int d=exgcd(b,a%b,x,y);
int z=x;
x=y;
y=(z-a/b*y);
return d;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
int x=0,y=0;
exgcd(i,m,x,y);////
x = (x + m) % m;
cout<<x<<endl;//x表示i在模m意义下的逆元
}
return 0;
}
- 线性方法
求i的逆元
点击查看代码
inv[1] = 1;
for(int i = 1; i < p; ++ i)
inv[i] = (p - p / i) * inv[p % i] % p;//这里有个问题困扰了我很久,为什么(p-p/i)=-(p/i) ? 因为 -(p/i)%p=p-(p/i) 不知道的去查
对与中国剩余定理
小试魔刀
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步