淺談乘法逆元
前言
乘法逆元……難以言表,一直覺得沒有什麼用,但是面對現實又不得……
正題
定義
若,且a與b互質,那麼我們就能定義: x爲a的逆元,記爲
,所以我們也可以稱x爲a的倒數(我的理解是不在模P意義下)
在模P意義下
所以對於
我們就可以求出b在下的逆元,然後乘上,再,就是這個乘法逆元的值了。
求法
擴歐的乘法逆元求法我已經在我的上篇博客介紹過了,
乘法逆元的擴展歐幾里得求法
我現在來介紹一點玄妙的東西
快速冪
費馬小定理大家應該會的
不會自行百度
那麼
可得
可得
ll fpm(ll x, ll power, ll mod)
{
x%=mod;
ll ans=1;
while (power) {
if (power & 1) ans = (ans * x) % mod;
x = (x * x) % mod;
power >>= 1;
}
return ans;
}
printf ("%lld\n",fpm(i,p-2,p));
線性求一連串數字模P的乘法逆元
這個真的好玄啊
首先
很容易知道
設
乘上
得
得
得
好神奇啊(霧)
#include<bits/stdc++.h>
using namespace std;
long long a[3000010],n,m,p;
int main()
{
scanf("%lld%lld",&n,&p);
a[1]=1;
printf("%lld\n",1);
for (int i=2; i<=n; i++)
{
a[i]=((-(p/i)*a[p%i])%p+p)%p;
printf("%lld\n",a[i]);
}
}