c++实现Tonelli–Shanks算法
c++实现Tonelli–Shanks算法算法思路:输入:模p的一个二次剩余n,奇素数p(意味着勒让德符号L(n,p)=1).输出:整数R,使得R^2≡n(mod p,以下默认)①从p-1中除去所有因子2,设p-1=q*2^S,其中q是奇数(也就是除去所有因子2的结果)。②选择一个z,使得勒让德符号L(z,p)= -1(即,z是p的二次非剩余(pow(z, (p - 1) // 2,p)==p-1 )③令c≡z^Q.r≡n^((Q+1)/2 ),t≡n^Q,m=S.④循环
原创
2021-03-23 11:38:29 ·
522 阅读 ·
0 评论