费马小定理(新方法)

费马小定理

内容:当p为质数,且gcd(a, p)=1,那么$ a^{p-1}\equiv 1 (\mod p ) $

证明:
构造出素数p的既约剩余系(最小公约数为1)

\(P=\) { \(1,2,3, ··· ,p-1\) }

因为(a, p)=1,所以A也是一个既约剩余系

$ A=$ { \(a, 2a, 3a, ··· ,(p-1)a\) }

因为A在mod p意义下把余数全取到了,所以

$ 1 \times 2 \times 3 \times ··· \times (p-1)\equiv a \times 2a \times 3a \times ··· \times a(p-1) (\mod p ) $

$ (p-1)! \equiv (p-1)! a^{p-1} ( \mod p ) $

因为$ ( (p-1)!, p )=1 $
所以

$ a^{p-1}\equiv 1 (\mod p ) $

当遇到求$ a/b \mod p $(p为质数)时,因为除法不能分开mod,所以要变成

$ a \times b^{-1} \mod p $

运用费马小定理再变

$ a \times (b{p-1})b \mod p $

$ a \times b^{p-2} \mod p $

不过,好麻烦啊

无聊时逛了wck的博客,看到他看到了vfk的神奇代码:(此处转载代码)

rfact[1] = 1;
for (int x = 2; x <= n; x++)
    rfact[x] = (s64)rfact[Mod % x] * (Mod - Mod / x) % Mod;

rfact[i]1/i mod p,称为i的逆元
证明:
设$ p=kx+b, k=\left \lfloor \frac{p}{x} \right \rfloor, b=p \mod x $,要求rfact[x].

\(\because p\equiv kx+b (\mod p )\)

$ \therefore xp\equiv kx+b (\mod p ) $

$ \frac{p}{b}\equiv \frac{k}{b}+\frac{1}{x} (\mod p ) $

$ \frac{1}{x} \equiv \frac{p-k}{b}(\mod p ) $

所以递推就可以把逆元全求出来。

告别快速幂。

PS:

好像发现了一些问题……
这里的Mod一定要是质数,否则会有错。
如果Mod不是质数,那么只能用扩展欧几里得。
\(rfact[x] \equiv \frac{1}{x} (\mod p)\)
\(x \cdot rfact[x] - kp= 1\)
扩展欧几里得可求。

posted @ 2015-03-28 07:39  GerynOhenz  阅读(362)  评论(0编辑  收藏  举报