前提
一天晚上,我只是在考虑数字。我发现一些关于数字的独特之处,例如7、10、12、13等。他们是正方形的正方形!意思是,当平方时,由平方本身组成。OEIS称它们为Squares,它们是两个或多个正方形的十进制连接。
这样的数字的示例包括7(49具有2 2和3 2)13(169具有4 2和3 2)和20(400具有2 2和0 2)。其他示例包括37,因为1369是一个术语,可以将其划分为1、36和9。1444(38 2)是一个术语,可以将其划分为1、4、4、4。 .SE,它以我的名字命名!
挑战
设计一个打印TanMath数字的程序。给定数字n(从1开始),打印第n个TanMath数字T(n)。
作为代码示例:
>> 1
>> 7
要么
>> 4
>> 13
参考Python实现(感谢@MartinBüttner和@ Sp3000!):
from math import sqrt
n = input()
def r(digits, depth):
z = len(digits)
if z < 1:
return (depth > 1)
else:
for i in range(1, z+1):
t = int(digits[:i])
if sqrt(t).is_integer() and r(digits[i:], depth+1):
return True
return False
i=0
t=0
while t < n:
i += 1
if r(str(i**2), 0):
t += 1
print i
以下是前100个数字的列表:
7 10 12 13 19 20 21 30 35 37 38 40 41 44 50 57 60 65 70 80 90 95 97 100 102 105 107 108 110 112 119 120 121 125 129 130 138 140 150 160 170 180 190 191 200 201 204 205 209 210 212 220 223 230 240 250 253 260 270 280 290 290 300 305 306 310 315 320 325 330 340 342 343 345 348 350 360 369 370 375 379 380 390 3390 4007 402 405 405 408 410 413 420 430 440 440 440 441 450 460 470 475 480 487 487
这是代码高尔夫,所以最短的代码获胜!
祝好运!