費馬小定理求逆元

逆元:已知P爲質數,且gcd(A,P)==1,  A*B在同模P的情況下與1相等 求出B的值

即 A*B=1(在mod P的條件下)所以乘B即乘以A^-1 ,B就是A的逆元

費馬小定理:P爲質數時且gcd(A,P)==1,則A^(P-1)=1(在mod P的條件下)

證明我不會qwq

所以根據費馬小定理  A*B=A^(P-1) 所以B=A^(P-2)

根據上述就可以輕鬆得到   A當P爲質數且gcd(A,P)==1時的逆元

例題:洛谷3381的模板題(用費馬小定理只能得到83,會TLE一個點)

題目描述

給定n,p求1~n中所有整數在模p意義下的乘法逆元。

輸入輸出格式

輸入格式:

一行n,p

輸出格式:

n行,第i行表示i在模p意義下的逆元。

因爲P爲質數且A<P,所以gcd(A,P)==1   即求A*x=1((在mod P的條件下) 中的x

//費馬小定理求逆元 
#include<bits/stdc++.h>
using namespace std;
int n,Mod;
inline int Pow(int x,int y,int p){
	int res=1;
	while(y){
		if(y&1)
			res=(1LL*res*x)%p;
		y>>=1;
		x=(1LL*x*x)%p;
	}return res;
}//快速冪
int main(){
	scanf("%d%d",&n,&Mod);
	for(int i=1;i<=n;i++){
		printf("%d\n",Pow(i,Mod-2,Mod));//直接輸出i^(Mod-2)%Mod,是不是很方便
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章