令
$$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}$为收缩函数。
import sympy,math
target=10**15
n,g=4,13
while True:
d=min((g+p-1)//p*p for p in sympy.primefactors(g-n-1))
m=n+d-g+1
if m>target:
g+=target-n
break
g=d+math.gcd(m,d)
n=m
print(g)