按数位递推,显然所有的一位数都是Harshad数,以此为初始列表作深度优先搜索。
每次尝试在当前数后添加一位,若获得的还是Harshad数,就添加进列表,并检查其是否为强Harshad数,若是,再尝试添加一位并检验素性。
最终结果是$696067597313468$。
注:为减少码量,以下用sympy作素性检验,因此代码为Python 3。
import sympy
bound=10**13
q=[1,2,3,4,5,6,7,8,9]
s=0
while q:
h=q.pop()
for i in range(10):
m=h*10+i
d=sum(map(int,str(m)))
if m%d==0:
if m<bound:
q.append(m)
if sympy.isprime(m//d):
s+=sum(n for j in (1,3,7,9) if sympy.isprime(n:=m*10+j))
print(s)
|