同余运算
R.<x> = Zmod(module)[]
相当于将 x x x作为需要求得的未知数
Zmod()内填入同余运算的模数
f = x^3 + ...
将同余运算的所有项移到同一边,赋值给函数 f f f来表示
f.roots()
运行之后就求解出来;以列表形式返回所有解
列表内部是元组类型
或者
f.smallroots(upper)
以upper为界限在这个上限内求解根
例题
需要求解
n 2 ≡ p 3 + a ∗ p 2 + b ∗ p ( m o d m o u d l e ) n^2 \equiv p^3 + a*p^2 + b*p(mod~moudle) n2≡p3+a∗p2+b∗p(mod moudle)
将同余式项全部移到一边
0 ≡ p 3 + a ∗ p 2 + b ∗ p − n 2 ( m o d m o u d l e ) 0 \equiv p^3 + a*p^2+b*p-n^2(mod~moudle) 0≡p3+a∗p2+b∗p−n2(mod moudle)
其中 a , b , m o u d l e , n a,b,moudle,n a,b,moudle,n已知;需要求解 p p p
那么在sage中写
R.<p> = Zmod(moudle)
f = p^3 + a*p^2 + b*p - n^2
f.roots()
那么 p p p的所有满足该同余式的解就会返回出来