Rabin算法

。_饼干妹妹 提交于 2019-12-06 06:49:47

中国剩余定理

如果已知n的素因子,那么就能够利用中国剩余定理求解方程组。用现代数学的语言来说明就是,中国剩余定理给出了以下的一元线性同余方程组有解的判定条件:

一般而言,如果n的素因子可以分解为:
\[ n=p_1 * p_2 * ... * p_t \]

那么方程组:
\[ (x \quad mod \quad p_i)=a_i \quad (i=1,2,...t) \]
有唯一解,这里x<n,就是说一个数被他的余数模这些素数唯一确定

例如,去两个素数2和5,与一个数字9,那么9 mod 2=19 mod 5=4,则小于2*5=10且满足上式的只有9

所以能够得到如果对已任意的a<p,b<q(p,q都是素数),那么,当x<p*q的时候,存在一个唯一的x使得:
\[ x \equiv a(mod \quad p)\quad 且\quad x\equiv b(mod \quad q) \]
如何计算x

首先通过欧几里得算法找到u,使得:
\[ u * q \equiv 1(mod \quad p) \]
然后计算:
\[ x=(((a-b) * u) mod \quad p)*q+b \]
推论:

如果pq都是素数,且 p<q,那么存在一个唯一的x<p*q,使得
\[ a \equiv x(mod \quad p)且b \equiv x(mod \quad q) \]
如果\(a \ge b\quad mod \quad p\),那么:
\[ x = (((a-(b \quad mod \quad p)) * u)mod \quad p) * q + b \]
如果\(a < b\quad mod \quad p\),那么:
\[ x = (((a+p-(b \quad mod \quad p)) * u)mod \quad p) * q + b \]

二次剩余

如果p是素数,且a<p,如果
\[ x^2 \equiv a(mod \quad p) \quad 对某些x成立 \]

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!