令
$$f_{n,a,b}(x)=ax+b \pmod n,$$
其中$a,b,x\in\mathbb Z$且$0 < a < n, 0\le b < n, 0\le x < n$。若
$$f_{n,a,b}(f_{n,a,b}(x))=f_{n,a,b}(x) \pmod n,$$
对任意$0\le x < n$都成立,就称$f_{n,a,b}$为收缩函数。
from sympy import sieve
import math
N=10**14
bound=10**7+1
tick=10**5
T=lambda n:n*(n+1)//2
mob=list(sieve.mobiusrange(1,bound))
print("initialization completed, start computing...")
s=0
for i in range(1,bound):
a=N//(i*i)
r=math.isqrt(a)
s+=i*mob[i-1]*(sum(T(a//j)+j*(a//j) for j in range(1,r+1))-r*T(r))
if i%tick==0:
print(i//tick,"percent completed, current sum:",s)
print((s-T(N))%(10**9+7))