MATH
####二次残差
Quadratic Residues
a^2^ $\equiv$ x mod p
即,a^2^>p时, (a^2^-x)是p的倍数 (当a^2^<p时, x = a^2^)
$\therefore$x= a^2^-mp (a^2^ > p)
例如:
1 | p=7 |
Legendre Symbol
Euler 判别准则
对于奇素数p
a^(p-1)//2^ $\equiv$ (a/p) $\equiv$ 1 mod p(此时有解) or -1 mod q (此时无解)
当已知条件p= 3 mod 4 时,可求解特殊化:
(a^(p+1)/4^)^2^=a^(p+1)/2^ mod p
(a^(p+1)/4^)^2^=x^(p-1)^x^2^ mod p(由费马小定理可知)
所以(a^(p+1)/4^)^2^=x^2^ mod p
所以a^(p+1)/4^mod p是一个解
####中国剩余定理
一般地,一次同余式组可以表示为:
x $\equiv$ b1 (modm1)
x $\equiv$ b2 (mod m2)
……
x $\equiv$ bk (mod mk)
设 m1 , m2 , …. , mk两两互素,则上面的同余式组有唯一的解:
x $\equiv$ M1^-1^M1b1+M2^-1^M2b2+…..+Mk^-1^Mkbk(mod m)
m=m1 m2 …mk , Mi=m/mi ,Mi^-1^=(也就是Mi与mi的逆元)
例子:
x $\equiv$ 2 (mod 3)
x $\equiv$ 3(mod 5)
x$\equiv$ 2(mod 7)
m1=3,m2=5, m3=7,m=m1m2m3= 3 $\times$ 5 $\times$7
M1=m/m1,M2=m/m2,M3=m/m3
M1^-1^=M1(mod m1)
M2^-1^=M2(mod m2)
M3^-1^=M3(mod m3)
所以x$\equiv$M1^1^M1b1+M2^1^M2b2+M3^1^M3b3
参考文献:SageMath简明教程 | tl2cents blog
基本数论函数
求逆:e模n的逆�模�的逆
定义在Zmod(N)上的元素e,直接
e^-1
或者1/e
否则直接使用
inverse_mod(e,n)
函数获得e模n的逆最大公因数:(a,b)的最大公因数
gcd(a,b)
最大公倍数:(a,b)的最大公倍数
lcm(a,b)
模幂:e^m^ mod n
定义在Zmod(N)上的元素e,直接
e^x
否则直接使用
pow(e,x,n)
素数判断
1
2
3sage: x=123721984710347123123
sage: x.is_prime()
False阶乘:
factorial(x)
欧拉函数:
1
2euler_phi(n)
# 求n的欧拉函数 phi = n*prod([1 - 1/p for p in prime divisors(n)])中国剩余定理求解
x≡m1 mod n1
x≡m2 mod n2
解为:
1
2
3crt([m1,m2],[n1,n2])
sage: crt([1,2],[3,5])
7扩展欧几里得算法:
d=gcd(a,b)=u∗a+v∗b
1
d,u,v=xgcd(a,b)
素数分解
1
2
3factor(1024) -> 2^10
prime_divisors(1024) -> [2]
divisors() #所有因子开根(有限域开根)
整数域开根
x^m^ = y 已知m,y求x
1
2
3sage: y=87^8
sage: y.nth_root(8)
87有限域开根:
x^m^ ≡ y mod N 已知m,y,N求x
1
2
3
4
5
6
7sage: y=pow(78,888,65537)
# 此时已经定义在有限域Zmod(65537)上
sage: y.nth_root(888)
65459
sage: x=y.nth_root(888)
sage: x+78
0注意:开根有多解,nth_root只会返回一个解,如果需要得到所有解,可以加一个参数:
1
sage: x=y.nth_root(888,all=True)