当n不能被10整除时,以$x_0=n$初值,$x\mapsto n^x\bmod 10^9$似乎很快就会收敛到一个不动点,该点也是题设中要求的数。
当n能被10整除时$n^n模10^9$得0,此时似乎也有$f(n)=0$。
具体原因未加验证,不过按以上方法试算已可得正确的最终结果$450186511399999$。
注:为使用内建函数pow作快速幂,以下代码为Python 3,代码中还打印了进度信息。
mod=10**9
s=0
for n in range(2,10**6+1):
if n%10>0:
x=n
y=pow(n,x,mod)
k=0
while x!=y:
x=y
y=pow(n,x,mod)
s+=x
if n%10000==0:
print(n//10000,"percent completed, current sum:",s)
print(s)
|