尤拉計劃719:拆分數

lt發表於2020-06-07

enter image description here 定義自然數完全平方數n為Sn,如果它的算術平方根等於其十進位制數拆分為的各個數之和。 如:sqrt{81} = 8+1,sqrt{6724} = 6+72+4,sqrt{8281} = 8+2+81 = 82+8+1,sqrt{9801}=98+0+1 定義T(N)為n<= N的Sn之和。已知T(10^4) = 41333
求T(10^{12})

import time
def t(n,x):
 if n==int(x):return 1
 if n>int(x):return 0
 for i in range(1,len(x)):
  r= t(n-int(x[-i:]),x[:-i])
  if r==1: return r
 return 0

def T(n):
 tm=time.time()
 s=0
 for i in range(9,n+1,9):
  for j in [0,1]:
   i+=j
   z=t(i,str(i**2))*i**2
   s+=z
 print(time.time()-tm)
 return s

n=10**6
print(T(n))

相關文章