0457 素数平方模
* * * *
拉格朗日计划
* * * *
素数平方模

给定素数p,令$R(p)$是使得$f(n)=n^2-3n-1$能被$p^2$整除的最小正整数n,不存在这样的n时定义$R(p)=0$。

记$SR(L)=\sum_{p\le L}R(p)$,求$SR(10^7)$。

本题难度:



解答

容易验证$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)