码迷,mamicode.com
首页 > 编程语言 > 详细

数论算法总结

时间:2018-08-25 14:27:58      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:注意   http   www.   证明   不可   数字   spl   span   splay   

数论算法总结

费马小定理

\(a^{p-1} \equiv 1 \pmod{p}\space ((a,p)=1,isprime(p))\)

  • 证明:Link
    这里给出通用形式:考虑任意正整数\(a\mod p\space ((a,p)=1)\)的剩余系,有\(1,2,3,\ldots ,p-1\)
    那么我们再取任意正整数\(a'((a',p)=1)\),将这个剩余系乘上\(a'\)\(\mod p\)后,剩余系还是\(1,2,\ldots,p-1\)的一个排列。
    将这些数字连乘得到:\(a'^{p-1}\times (p-1)! \equiv (p-1)! \mod p\),两边同除\((p-1)!\)得到:\(a'^{p-1}\times 1 \equiv 1 \mod p\),将\(a'\)替换为\(a\)即可。
    求逆元就是\(a^{p-2}\times a \equiv 1 \pmod{p}\)
    注意一切的推导都是在上面的式子条件下的。

欧拉定理

\(a^{\phi(n)}\equiv 1 \pmod{n} ((a,n)=1)\)

  • 容易发现,前面的费马小定理是欧拉定理的儿子定理。
    主要是来补充一下为什么\(a\times x_i \mod n ((a,n)=1,x_i\leq n)\)\(\phi(n)\)种结果。
    假设\(m_i=a\times x_i\),那么假设存在\(m_i\equiv m_j \pmod{n} (i\not =j)\),那么就有:\(a(x_j-x_i)= kn\),但是由于\((a,n)=1\)\(x_j-x_i<n\),所以无论如何都不可能有解。 剩下的证明和上面一样。

拓展欧拉定理

\(a^b\equiv \begin{cases} a^{b\%\phi(p)}~~~~~~~~~~~gcd(a,p)=1\\ a^b~~~~~~~~~~~~~~~~~~gcd(a,p)\neq1,b<\phi(p)\\ a^{b\%\phi(p)+\phi(p)}~~~~gcd(a,p)\neq1,b\geq\phi(p) \end{cases}~~~~~~~(mod~p)\)

证明:Link

BSGS

给定 \(a,b,p\),求最小的非负整数\(x\)\(x\)满足\(a^x \equiv b \pmod{p}\)

首先有费马小定理可知:\(a^{k\mod (p-1)}\equiv a^k \pmod{p}\),所以说\(x< p-1\)
那么我们令\(m=\lceil \sqrt{p} \rceil\)\(x=i\times m -j\),那么有:\[a^{i\times m-j}\equiv b \pmod{p}\]
\[a^{i\times m}\equiv b \times a^j\pmod{p}\]
那么暴力在\(0\to m\)枚举\(j\),存入Hash表,然后在\(1\to m\)枚举i查询。

数论算法总结

标签:注意   http   www.   证明   不可   数字   spl   span   splay   

原文地址:https://www.cnblogs.com/wxjor/p/9533407.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!