根据OEIS A147811的信息,A可以由如下公式生成:
$$A=p(p+d)(p+\frac{p^2+1}{d}),$$
其中p取遍所有自然数,d取遍$p^2+1$的约数。
用与第216题类似的筛法作$p^2+1$的质因数分解,然后遍历p(p的上限经过尝试取为80000),用$p^2+1$的质因数分解枚举其所有约数。
生成的亚历山大数加入集合去重,最后排序即得结果$1884161251122450$。
注:以下为Python 3代码,因math.prod是Python 3中新增的函数,用星号作列表展开也是Python 3的新特性。
import math,itertools
bound=80000
f=[i*i+1 for i in range(bound)]
g=[{} for i in range(bound)]
for i in range(1,bound):
if f[i]>1:
p=f[i]
for j in range(i,bound,p):
while f[j]%p==0:
f[j]//=p
g[j][p]=g[j].get(p,0)+1
for j in range(p-i,bound,p):
while f[j]%p==0:
f[j]//=p
g[j][p]=g[j].get(p,0)+1
a=set()
for p in range(1,bound):
r=list(g[p].keys())
for d in [math.prod(r[i]**j for i,j in enumerate(c)) for c in itertools.product(*[range(g[p][k]+1) for k in r])]:
a.add(p*(p+d)*(p+(p*p+1)//d))
print(sorted(a)[149999])
|