容易验证$p=2$时无解,$p>2$时原方程可转化为
$$(2n-3)^2=13 \pmod p$$
用sympy的库函数即可直接求解,最总结果是$2647787126797397063$。
注:因使用sympy求$\mathbb F_p$中的逆和平方根,以下代码为Python 3,代码中还打印了进度信息。
from sympy.ntheory import sqrt_mod
from sympy import primerange,mod_inverse
tick=6645
res=0
for i,p in enumerate(primerange(3,10**7)):
q=p*p
a=mod_inverse(2,q)
if L:=sqrt_mod(13,q,True):
res+=min(((x+3)*a)%q for x in L)
if i%tick==0:
print(i//tick,"percent completed, current sum:",res)
print(res)
|