指导思想
https://en.wikipedia.org/wiki/Cipolla%27s_algorithm
http://www.sciencedirect.com/science/article/pii/S0893965902000319
寻找模平方剩余
问题模型
给出质数
p
和整数
Cipolla’s Algorithm
定义二次剩余符号 (ap)≡ap−12(modp) ,当其为1时表示 a 是二次剩余。
找到一个
在扩域上计算
(w+w2−a−−−−−−√)p+12
,则为一个可行的
x
,另外一个可行解为
利用复数域的知识即可证明生成算法的正确性,时间复杂度 O(logp) 。
寻找模立方剩余
问题模型
给出质数
p
和整数
Peralta Method Extension
如果 p≡−1(mod3) ,则 x≡a2p−13(modp) 是唯一解。
否则 (−3p)=1 ,则 ϵ=−3√−12 为三次单位根,即 ϵ3≡1(modp) 。
此时有三分之一的数字是三次剩余,定义三次剩余符号 [ap]≡ap−13(modp) ,当其为1时表示 a 是二次剩余。
如果找到一个
类似二次剩余的证明方法,对于
a
的立方根
于是有一个极为暴力的想法是随机生成一个元素
u∈R
(也就是随机生成多项式的系数),令
v≡up−13(modp)
,则有
v3≡1(modp)
,如果
v
的多项式系数中只有
类似地可以分析出满足
v
的多项式系数中只有
其实方法有很多,都可以学习一下